Metadata API Reference: Remote schemas
Introductionβ
Add/Remove a remote GraphQL server as remote schema in Hasura GraphQL engine.
Supported from
The metadata API is supported for versions v2.0.0
and above and
replaces the older schema/metadata API.
add_remote_schemaβ
add_remote_schema
is used to add a remote GraphQL server as remote
schema. GraphQL engine stitches it's schema with existing.
An example request as follows:
POST /v1/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin
{
"type": "add_remote_schema",
"args": {
"name": "my remote schema",
"definition": {
"url": "https://remote-server.com/graphql",
"headers": [{"name": "X-Server-Request-From", "value": "Hasura"}],
"forward_client_headers": false,
"timeout_seconds": 60,
"customization": {
"root_fields_namespace": "some_field_name",
"type_names": {
"prefix": "some_type_name_prefix",
"suffix": "some_type_name_suffix",
"mapping": {
"some_type_name": "some_new_type_name"
}
},
"field_names": [ {
"parent_type": "some_type_name",
"prefix": "some_field_name_prefix",
"suffix": "some_field_name_suffix",
"mapping": {
"some_field_name": "some_new_field_name"
}
} ]
}
},
"comment": "some optional comment"
}
}
Args syntaxβ
Key | Required | Schema | Description |
---|---|---|---|
name | true | RemoteSchemaName | Name of the remote schema |
definition | true | RemoteSchemaDef | Definition for the remote schema |
comment | false | Text | comment |
update_remote_schemaβ
update_remote_schema
is used to update the configuration of a remote
schema. If the remote schema URL has changed then it will perform a
introspection as well. After introspection, if there are any
inconsistencies detected with other metadata objects (like remote
relationships or remote schema permissions) they will be reported as
An example request as follows:
POST /v1/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin
{
"type": "update_remote_schema",
"args": {
"name": "my remote schema",
"definition": {
"url": "https://remote-server.com/graphql",
"headers": [{"name": "X-Server-Request-From", "value": "Hasura"}],
"forward_client_headers": false,
"timeout_seconds": 60,
"customization": {
"root_fields_namespace": "some_field_name",
"type_names": {
"prefix": "some_type_name_prefix",
"suffix": "some_type_name_suffix",
"mapping": {
"some_type_name": "some_new_type_name"
}
},
"field_names": [ {
"parent_type": "some_type_name",
"prefix": "some_field_name_prefix",
"suffix": "some_field_name_suffix",
"mapping": {
"some_field_name": "some_new_field_name"
}
} ]
}
},
"comment": "some optional comment"
}
}
Args syntaxβ
Key | Required | Schema | Description |
---|---|---|---|
name | true | RemoteSchemaName | Name of the remote schema |
definition | true | RemoteSchemaDef | Definition for the remote schema |
comment | false | Text | comment |
remove_remote_schemaβ
remove_remote_schema
is used to delete a remote schema. GraphQL engine
de-stitches it's schema.
An example request as follows:
POST /v1/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin
{
"type": "remove_remote_schema",
"args": {
"name": "my remote schema"
}
}
Args syntaxβ
Key | Required | Schema | Description |
---|---|---|---|
name | true | RemoteSchemaName | Name of the remote schema |
reload_remote_schemaβ
reload_remote_schema
is used to refresh schema of the remote server.
GraphQL engine refetches schema from server and stitches.
An example request as follows:
POST /v1/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin
{
"type": "reload_remote_schema",
"args": {
"name": "my remote schema"
}
}
Args syntaxβ
Key | Required | Schema | Description |
---|---|---|---|
name | true | RemoteSchemaName | Name of the remote schema |