UNPKG

@hasura/ndc-sdk-typescript

Version:

This SDK is mostly analogous to the Rust SDK, except where necessary.

1,382 lines (1,381 loc) 134 kB
{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "SchemaRoot", "type": "object", "required": [ "capabilities_response", "error_response", "explain_response", "mutation_request", "mutation_response", "query_request", "query_response", "schema_response", "validate_response" ], "properties": { "capabilities_response": { "$ref": "#/definitions/CapabilitiesResponse" }, "schema_response": { "$ref": "#/definitions/SchemaResponse" }, "query_request": { "$ref": "#/definitions/QueryRequest" }, "query_response": { "$ref": "#/definitions/QueryResponse" }, "mutation_request": { "$ref": "#/definitions/MutationRequest" }, "mutation_response": { "$ref": "#/definitions/MutationResponse" }, "explain_response": { "$ref": "#/definitions/ExplainResponse" }, "error_response": { "$ref": "#/definitions/ErrorResponse" }, "validate_response": { "$ref": "#/definitions/ValidateResponse" } }, "definitions": { "CapabilitiesResponse": { "title": "Capabilities Response", "type": "object", "required": [ "capabilities", "version" ], "properties": { "version": { "type": "string" }, "capabilities": { "$ref": "#/definitions/Capabilities" } } }, "Capabilities": { "title": "Capabilities", "description": "Describes the features of the specification which a data connector implements.", "type": "object", "required": [ "mutation", "query" ], "properties": { "query": { "$ref": "#/definitions/QueryCapabilities" }, "mutation": { "$ref": "#/definitions/MutationCapabilities" }, "relationships": { "anyOf": [ { "$ref": "#/definitions/RelationshipCapabilities" }, { "type": "null" } ] } } }, "QueryCapabilities": { "title": "Query Capabilities", "type": "object", "properties": { "aggregates": { "description": "Does the connector support aggregate queries", "anyOf": [ { "$ref": "#/definitions/AggregateCapabilities" }, { "type": "null" } ] }, "variables": { "description": "Does the connector support queries which use variables", "anyOf": [ { "$ref": "#/definitions/LeafCapability" }, { "type": "null" } ] }, "explain": { "description": "Does the connector support explaining queries", "anyOf": [ { "$ref": "#/definitions/LeafCapability" }, { "type": "null" } ] }, "nested_fields": { "description": "Does the connector support nested fields", "default": {}, "allOf": [ { "$ref": "#/definitions/NestedFieldCapabilities" } ] }, "exists": { "description": "Does the connector support EXISTS predicates", "default": {}, "allOf": [ { "$ref": "#/definitions/ExistsCapabilities" } ] } } }, "AggregateCapabilities": { "title": "Aggregate Capabilities", "type": "object", "properties": { "filter_by": { "description": "Does the connector support filtering based on aggregated values", "anyOf": [ { "$ref": "#/definitions/LeafCapability" }, { "type": "null" } ] }, "group_by": { "description": "Does the connector support aggregations over groups", "anyOf": [ { "$ref": "#/definitions/GroupByCapabilities" }, { "type": "null" } ] } } }, "LeafCapability": { "description": "A unit value to indicate a particular leaf capability is supported. This is an empty struct to allow for future sub-capabilities.", "type": "object" }, "GroupByCapabilities": { "title": "Group By Capabilities", "type": "object", "properties": { "filter": { "description": "Does the connector support post-grouping predicates", "anyOf": [ { "$ref": "#/definitions/LeafCapability" }, { "type": "null" } ] }, "order": { "description": "Does the connector support post-grouping ordering", "anyOf": [ { "$ref": "#/definitions/LeafCapability" }, { "type": "null" } ] }, "paginate": { "description": "Does the connector support post-grouping pagination", "anyOf": [ { "$ref": "#/definitions/LeafCapability" }, { "type": "null" } ] } } }, "NestedFieldCapabilities": { "title": "Nested Field Capabilities", "type": "object", "properties": { "filter_by": { "description": "Does the connector support filtering by values of nested fields", "anyOf": [ { "$ref": "#/definitions/NestedFieldFilterByCapabilities" }, { "type": "null" } ] }, "order_by": { "description": "Does the connector support ordering by values of nested fields", "anyOf": [ { "$ref": "#/definitions/LeafCapability" }, { "type": "null" } ] }, "aggregates": { "description": "Does the connector support aggregating values within nested fields", "anyOf": [ { "$ref": "#/definitions/LeafCapability" }, { "type": "null" } ] }, "nested_collections": { "description": "Does the connector support nested collection queries using `NestedField::NestedCollection`", "anyOf": [ { "$ref": "#/definitions/LeafCapability" }, { "type": "null" } ] } } }, "NestedFieldFilterByCapabilities": { "title": "Nested Field Filter By Capabilities", "type": "object", "properties": { "nested_arrays": { "description": "Does the connector support filtering over nested arrays (ie. Expression::ArrayComparison)", "anyOf": [ { "$ref": "#/definitions/NestedArrayFilterByCapabilities" }, { "type": "null" } ] } } }, "NestedArrayFilterByCapabilities": { "title": "Nested Array Filter By Capabilities", "type": "object", "properties": { "contains": { "description": "Does the connector support filtering over nested arrays by checking if the array contains a value. This must be supported for all types that can be contained in an array that implement an 'eq' comparison operator.", "anyOf": [ { "$ref": "#/definitions/LeafCapability" }, { "type": "null" } ] }, "is_empty": { "description": "Does the connector support filtering over nested arrays by checking if the array is empty. This must be supported no matter what type is contained in the array.", "anyOf": [ { "$ref": "#/definitions/LeafCapability" }, { "type": "null" } ] } } }, "ExistsCapabilities": { "title": "Exists Capabilities", "type": "object", "properties": { "named_scopes": { "description": "Does the connector support named scopes in column references inside EXISTS predicates", "anyOf": [ { "$ref": "#/definitions/LeafCapability" }, { "type": "null" } ] }, "unrelated": { "description": "Does the connector support ExistsInCollection::Unrelated", "anyOf": [ { "$ref": "#/definitions/LeafCapability" }, { "type": "null" } ] }, "nested_collections": { "description": "Does the connector support ExistsInCollection::NestedCollection", "anyOf": [ { "$ref": "#/definitions/LeafCapability" }, { "type": "null" } ] }, "nested_scalar_collections": { "description": "Does the connector support filtering over nested scalar arrays using existential quantification. This means the connector must support ExistsInCollection::NestedScalarCollection.", "anyOf": [ { "$ref": "#/definitions/LeafCapability" }, { "type": "null" } ] } } }, "MutationCapabilities": { "title": "Mutation Capabilities", "type": "object", "properties": { "transactional": { "description": "Does the connector support executing multiple mutations in a transaction.", "anyOf": [ { "$ref": "#/definitions/LeafCapability" }, { "type": "null" } ] }, "explain": { "description": "Does the connector support explaining mutations", "anyOf": [ { "$ref": "#/definitions/LeafCapability" }, { "type": "null" } ] } } }, "RelationshipCapabilities": { "title": "Relationship Capabilities", "type": "object", "properties": { "relation_comparisons": { "description": "Does the connector support comparisons that involve related collections (ie. joins)?", "anyOf": [ { "$ref": "#/definitions/LeafCapability" }, { "type": "null" } ] }, "order_by_aggregate": { "description": "Does the connector support ordering by an aggregated array relationship?", "anyOf": [ { "$ref": "#/definitions/LeafCapability" }, { "type": "null" } ] }, "nested": { "description": "Does the connector support navigating a relationship from inside a nested object", "anyOf": [ { "$ref": "#/definitions/NestedRelationshipCapabilities" }, { "type": "null" } ] } } }, "NestedRelationshipCapabilities": { "title": "Nested Relationship Capabilities", "type": "object", "properties": { "array": { "description": "Does the connector support navigating a relationship from inside a nested object inside a nested array", "anyOf": [ { "$ref": "#/definitions/LeafCapability" }, { "type": "null" } ] }, "filtering": { "description": "Does the connector support filtering over a relationship that starts from inside a nested object", "anyOf": [ { "$ref": "#/definitions/LeafCapability" }, { "type": "null" } ] }, "ordering": { "description": "Does the connector support ordering over a relationship that starts from inside a nested object", "anyOf": [ { "$ref": "#/definitions/LeafCapability" }, { "type": "null" } ] } } }, "SchemaResponse": { "title": "Schema Response", "type": "object", "required": [ "collections", "functions", "object_types", "procedures", "scalar_types" ], "properties": { "scalar_types": { "description": "A list of scalar types which will be used as the types of collection columns", "type": "object", "additionalProperties": { "$ref": "#/definitions/ScalarType" } }, "object_types": { "description": "A list of object types which can be used as the types of arguments, or return types of procedures. Names should not overlap with scalar type names.", "type": "object", "additionalProperties": { "$ref": "#/definitions/ObjectType" } }, "collections": { "description": "Collections which are available for queries", "type": "array", "items": { "$ref": "#/definitions/CollectionInfo" } }, "functions": { "description": "Functions (i.e. collections which return a single column and row)", "type": "array", "items": { "$ref": "#/definitions/FunctionInfo" } }, "procedures": { "description": "Procedures which are available for execution as part of mutations", "type": "array", "items": { "$ref": "#/definitions/ProcedureInfo" } }, "capabilities": { "description": "Schema data which is relevant to features enabled by capabilities", "anyOf": [ { "$ref": "#/definitions/CapabilitySchemaInfo" }, { "type": "null" } ] } } }, "ScalarType": { "title": "Scalar Type", "description": "The definition of a scalar type, i.e. types that can be used as the types of columns.", "type": "object", "required": [ "aggregate_functions", "comparison_operators", "representation" ], "properties": { "representation": { "description": "A description of valid values for this scalar type.", "allOf": [ { "$ref": "#/definitions/TypeRepresentation" } ] }, "aggregate_functions": { "description": "A map from aggregate function names to their definitions. Result type names must be defined scalar types declared in ScalarTypesCapabilities.", "type": "object", "additionalProperties": { "$ref": "#/definitions/AggregateFunctionDefinition" } }, "comparison_operators": { "description": "A map from comparison operator names to their definitions. Argument type names must be defined scalar types declared in ScalarTypesCapabilities.", "type": "object", "additionalProperties": { "$ref": "#/definitions/ComparisonOperatorDefinition" } }, "extraction_functions": { "description": "A map from extraction function names to their definitions.", "default": {}, "type": "object", "additionalProperties": { "$ref": "#/definitions/ExtractionFunctionDefinition" } } } }, "TypeRepresentation": { "title": "Type Representation", "description": "Representations of scalar types", "oneOf": [ { "description": "JSON booleans", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "boolean" ] } } }, { "description": "Any JSON string", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "string" ] } } }, { "description": "A 8-bit signed integer with a minimum value of -2^7 and a maximum value of 2^7 - 1", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "int8" ] } } }, { "description": "A 16-bit signed integer with a minimum value of -2^15 and a maximum value of 2^15 - 1", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "int16" ] } } }, { "description": "A 32-bit signed integer with a minimum value of -2^31 and a maximum value of 2^31 - 1", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "int32" ] } } }, { "description": "A 64-bit signed integer with a minimum value of -2^63 and a maximum value of 2^63 - 1", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "int64" ] } } }, { "description": "An IEEE-754 single-precision floating-point number", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "float32" ] } } }, { "description": "An IEEE-754 double-precision floating-point number", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "float64" ] } } }, { "description": "Arbitrary-precision integer string", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "biginteger" ] } } }, { "description": "Arbitrary-precision decimal string", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "bigdecimal" ] } } }, { "description": "UUID string (8-4-4-4-12)", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "uuid" ] } } }, { "description": "ISO 8601 date", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "date" ] } } }, { "description": "ISO 8601 timestamp", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "timestamp" ] } } }, { "description": "ISO 8601 timestamp-with-timezone", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "timestamptz" ] } } }, { "description": "GeoJSON, per RFC 7946", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "geography" ] } } }, { "description": "GeoJSON Geometry object, per RFC 7946", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "geometry" ] } } }, { "description": "Base64-encoded bytes", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "bytes" ] } } }, { "description": "Arbitrary JSON", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "json" ] } } }, { "description": "One of the specified string values", "type": "object", "required": [ "one_of", "type" ], "properties": { "type": { "type": "string", "enum": [ "enum" ] }, "one_of": { "type": "array", "items": { "type": "string" } } } } ] }, "AggregateFunctionDefinition": { "title": "Aggregate Function Definition", "description": "The definition of an aggregation function on a scalar type", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "min" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "max" ] } } }, { "type": "object", "required": [ "result_type", "type" ], "properties": { "type": { "type": "string", "enum": [ "sum" ] }, "result_type": { "description": "The scalar type of the result of this function, which should have one of the type representations Int64 or Float64, depending on whether this function is defined on a scalar type with an integer or floating-point representation, respectively.", "type": "string" } } }, { "type": "object", "required": [ "result_type", "type" ], "properties": { "type": { "type": "string", "enum": [ "average" ] }, "result_type": { "description": "The scalar type of the result of this function, which should have the type representation Float64", "type": "string" } } }, { "type": "object", "required": [ "result_type", "type" ], "properties": { "type": { "type": "string", "enum": [ "custom" ] }, "result_type": { "description": "The scalar or object type of the result of this function", "allOf": [ { "$ref": "#/definitions/Type" } ] } } } ] }, "Type": { "title": "Type", "description": "Types track the valid representations of values as JSON", "oneOf": [ { "description": "A named type", "type": "object", "required": [ "name", "type" ], "properties": { "type": { "type": "string", "enum": [ "named" ] }, "name": { "description": "The name can refer to a scalar or object type", "type": "string" } } }, { "description": "A nullable type", "type": "object", "required": [ "type", "underlying_type" ], "properties": { "type": { "type": "string", "enum": [ "nullable" ] }, "underlying_type": { "description": "The type of the non-null inhabitants of this type", "allOf": [ { "$ref": "#/definitions/Type" } ] } } }, { "description": "An array type", "type": "object", "required": [ "element_type", "type" ], "properties": { "type": { "type": "string", "enum": [ "array" ] }, "element_type": { "description": "The type of the elements of the array", "allOf": [ { "$ref": "#/definitions/Type" } ] } } }, { "description": "A predicate type for a given object type", "type": "object", "required": [ "object_type_name", "type" ], "properties": { "type": { "type": "string", "enum": [ "predicate" ] }, "object_type_name": { "description": "The object type name", "type": "string" } } } ] }, "ComparisonOperatorDefinition": { "title": "Comparison Operator Definition", "description": "The definition of a comparison operator on a scalar type", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "equal" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "in" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "less_than" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "less_than_or_equal" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "greater_than" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "greater_than_or_equal" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "contains" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "contains_insensitive" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "starts_with" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "starts_with_insensitive" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "ends_with" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "ends_with_insensitive" ] } } }, { "type": "object", "required": [ "argument_type", "type" ], "properties": { "type": { "type": "string", "enum": [ "custom" ] }, "argument_type": { "description": "The type of the argument to this operator", "allOf": [ { "$ref": "#/definitions/Type" } ] } } } ] }, "ExtractionFunctionDefinition": { "title": "Extraction Function Definition", "description": "The definition of an aggregation function on a scalar type", "oneOf": [ { "type": "object", "required": [ "result_type", "type" ], "properties": { "type": { "type": "string", "enum": [ "nanosecond" ] }, "result_type": { "description": "The result type, which must be a defined scalar type in the schema response.", "type": "string" } } }, { "type": "object", "required": [ "result_type", "type" ], "properties": { "type": { "type": "string", "enum": [ "microsecond" ] }, "result_type": { "description": "The result type, which must be a defined scalar type in the schema response.", "type": "string" } } }, { "type": "object", "required": [ "result_type", "type" ], "properties": { "type": { "type": "string", "enum": [ "second" ] }, "result_type": { "description": "The result type, which must be a defined scalar type in the schema response.", "type": "string" } } }, { "type": "object", "required": [ "result_type", "type" ], "properties": { "type": { "type": "string", "enum": [ "minute" ] }, "result_type": { "description": "The result type, which must be a defined scalar type in the schema response.", "type": "string" } } }, { "type": "object", "required": [ "result_type", "type" ], "properties": { "type": { "type": "string", "enum": [ "hour" ] }, "result_type": { "description": "The result type, which must be a defined scalar type in the schema response.", "type": "string" } } }, { "type": "object", "required": [ "result_type", "type" ], "properties": { "type": { "type": "string", "enum": [ "day" ] }, "result_type": { "description": "The result type, which must be a defined scalar type in the schema response.", "type": "string" } } }, { "type": "object", "required": [ "result_type", "type" ], "properties": { "type": { "type": "string", "enum": [ "week"