Schema
The schema endpoint defines any types used by the data connector, and describes the collections and their columns, functions, and any procedures.
The schema endpoint is used to specify the behavior of a data connector, so that it can be tested, verified, and used by tools such as code generators. It is primarily provided by data connector implementors as a development and specification tool, and it is not expected to be used at "runtime", in the same sense that the /query
and /mutation
endpoints would be.
Request
GET /schema
Response
See SchemaResponse
Example
{
"scalar_types": {
"Int": {
"representation": {
"type": "int32"
},
"aggregate_functions": {
"max": {
"result_type": {
"type": "nullable",
"underlying_type": {
"type": "named",
"name": "Int"
}
}
},
"min": {
"result_type": {
"type": "nullable",
"underlying_type": {
"type": "named",
"name": "Int"
}
}
}
},
"comparison_operators": {
"eq": {
"type": "equal"
},
"in": {
"type": "in"
}
}
},
"String": {
"representation": {
"type": "string"
},
"aggregate_functions": {},
"comparison_operators": {
"eq": {
"type": "equal"
},
"in": {
"type": "in"
},
"like": {
"type": "custom",
"argument_type": {
"type": "named",
"name": "String"
}
}
}
}
},
"object_types": {
"article": {
"description": "An article",
"fields": {
"author_id": {
"description": "The article's author ID",
"type": {
"type": "named",
"name": "Int"
}
},
"id": {
"description": "The article's primary key",
"type": {
"type": "named",
"name": "Int"
}
},
"title": {
"description": "The article's title",
"type": {
"type": "named",
"name": "String"
}
}
}
},
"author": {
"description": "An author",
"fields": {
"first_name": {
"description": "The author's first name",
"type": {
"type": "named",
"name": "String"
}
},
"id": {
"description": "The author's primary key",
"type": {
"type": "named",
"name": "Int"
}
},
"last_name": {
"description": "The author's last name",
"type": {
"type": "named",
"name": "String"
}
}
}
},
"institution": {
"description": "An institution",
"fields": {
"departments": {
"description": "The institution's departments",
"type": {
"type": "array",
"element_type": {
"type": "named",
"name": "String"
}
},
"arguments": {
"limit": {
"type": {
"type": "nullable",
"underlying_type": {
"type": "named",
"name": "Int"
}
}
}
}
},
"id": {
"description": "The institution's primary key",
"type": {
"type": "named",
"name": "Int"
}
},
"location": {
"description": "The institution's location",
"type": {
"type": "named",
"name": "location"
}
},
"name": {
"description": "The institution's name",
"type": {
"type": "named",
"name": "String"
}
},
"staff": {
"description": "The institution's staff",
"type": {
"type": "array",
"element_type": {
"type": "named",
"name": "staff_member"
}
},
"arguments": {
"limit": {
"type": {
"type": "nullable",
"underlying_type": {
"type": "named",
"name": "Int"
}
}
}
}
}
}
},
"location": {
"description": "A location",
"fields": {
"campuses": {
"description": "The location's campuses",
"type": {
"type": "array",
"element_type": {
"type": "named",
"name": "String"
}
},
"arguments": {
"limit": {
"type": {
"type": "nullable",
"underlying_type": {
"type": "named",
"name": "Int"
}
}
}
}
},
"city": {
"description": "The location's city",
"type": {
"type": "named",
"name": "String"
}
},
"country": {
"description": "The location's country",
"type": {
"type": "named",
"name": "String"
}
}
}
},
"staff_member": {
"description": "A staff member",
"fields": {
"first_name": {
"description": "The staff member's first name",
"type": {
"type": "named",
"name": "String"
}
},
"last_name": {
"description": "The staff member's last name",
"type": {
"type": "named",
"name": "String"
}
},
"specialities": {
"description": "The staff member's specialities",
"type": {
"type": "array",
"element_type": {
"type": "named",
"name": "String"
}
},
"arguments": {
"limit": {
"type": {
"type": "nullable",
"underlying_type": {
"type": "named",
"name": "Int"
}
}
}
}
}
}
}
},
"collections": [
{
"name": "articles",
"description": "A collection of articles",
"arguments": {},
"type": "article",
"uniqueness_constraints": {
"ArticleByID": {
"unique_columns": [
"id"
]
}
},
"foreign_keys": {
"Article_AuthorID": {
"column_mapping": {
"author_id": "id"
},
"foreign_collection": "authors"
}
}
},
{
"name": "authors",
"description": "A collection of authors",
"arguments": {},
"type": "author",
"uniqueness_constraints": {
"AuthorByID": {
"unique_columns": [
"id"
]
}
},
"foreign_keys": {}
},
{
"name": "institutions",
"description": "A collection of institutions",
"arguments": {},
"type": "institution",
"uniqueness_constraints": {
"InstitutionByID": {
"unique_columns": [
"id"
]
}
},
"foreign_keys": {}
},
{
"name": "articles_by_author",
"description": "Articles parameterized by author",
"arguments": {
"author_id": {
"type": {
"type": "named",
"name": "Int"
}
}
},
"type": "article",
"uniqueness_constraints": {},
"foreign_keys": {}
}
],
"functions": [
{
"name": "latest_article_id",
"description": "Get the ID of the most recent article",
"arguments": {},
"result_type": {
"type": "nullable",
"underlying_type": {
"type": "named",
"name": "Int"
}
}
},
{
"name": "latest_article",
"description": "Get the most recent article",
"arguments": {},
"result_type": {
"type": "nullable",
"underlying_type": {
"type": "named",
"name": "article"
}
}
}
],
"procedures": [
{
"name": "upsert_article",
"description": "Insert or update an article",
"arguments": {
"article": {
"description": "The article to insert or update",
"type": {
"type": "named",
"name": "article"
}
}
},
"result_type": {
"type": "nullable",
"underlying_type": {
"type": "named",
"name": "article"
}
}
},
{
"name": "delete_articles",
"description": "Delete articles which match a predicate",
"arguments": {
"where": {
"description": "The predicate",
"type": {
"type": "predicate",
"object_type_name": "article"
}
}
},
"result_type": {
"type": "array",
"element_type": {
"type": "named",
"name": "article"
}
}
}
]
}
Response Fields
Name | Description |
---|---|
scalar_types | Scalar Types |
object_types | Object Types |
collections | Collection |
functions | Functions |
procedures | Procedures |