Schema/Metadata API Reference: Manage metadata¶
Table of contents
Introduction¶
APIs to manage Hasura metadata which is stored in hdb_catalog
schema.
export_metadata¶
export_metadata
is used to export the current metadata from the server as a JSON
file.
POST /v1/query HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin
{
"type" : "export_metadata",
"args": {}
}
Response:
The response JSON will be the metadata object. The structure of the metadata object is just a JSON version of the metadata files generated by the CLI.
replace_metadata¶
replace_metadata
is used to replace/import metadata into Hasura. Existing
metadata will be replaced with the new one.
POST /v1/query HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin
{
"type" : "replace_metadata",
"args": "<metadata-as-json-object>"
}
Args syntax¶
Args should be the JSON object which is same as the output of export_metadata.
reload_metadata¶
reload_metadata
should be used when there is a change in underlying Postgres
database that Hasura should be aware of. Example: a new column is added to a
table using psql
and this column should now be added to the GraphQL schema.
POST /v1/query HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin
{
"type" : "reload_metadata",
"args": {
"reload_remote_schemas": true
}
}
Args syntax¶
Key | Required | Schema | Description |
---|---|---|---|
reload_remote_schemas | false | Boolean | If set to true , all remote schemas’ (including inconsistent ones) cached GraphQL schemas are refreshed (default: false ) |
clear_metadata¶
clear_metadata
can be used to reset the state of Hasura – clean the current
state by forgetting the tables tracked, relationships, permissions, event
triggers etc.
POST /v1/query HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin
{
"type" : "clear_metadata",
"args": {}
}
get_inconsistent_metadata¶
get_inconsistent_metadata
can be used to fetch all inconsistent metadata objects.
POST /v1/query HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin
{
"type": "get_inconsistent_metadata",
"args": {}
}
Response:
[
{
"definition": {
"using": {
"foreign_key_constraint_on": {
"column": "author_id",
"table": "article"
}
},
"name": "articles",
"comment": null,
"table": "author"
},
"reason": "table \"article\" does not exist",
"type": "array_relation"
},
{
"definition": {
"using": {
"foreign_key_constraint_on": "author_id"
},
"name": "author",
"comment": null,
"table": "article"
},
"reason": "table \"article\" does not exist",
"type": "object_relation"
},
{
"definition": "article",
"reason": "no such table/view exists in postgres : \"article\"",
"type": "table"
}
]
drop_inconsistent_metadata¶
drop_inconsistent_metadata
can be used to purge all inconsistent objects from the metadata.
POST /v1/query HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin
{
"type": "drop_inconsistent_metadata",
"args": {}
}