Schema/Metadata API Reference: Tables/Views¶
Table of contents
Track/untrack a table/view in Hasura GraphQL engine.
Only tracked tables/views are available for querying/mutating/subscribing data over the GraphQL API.
track_table¶
track_table
is used to add a table/view to the GraphQL schema.
Add a table/view author
:
POST /v1/query HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin
{
"type": "track_table",
"args": {
"schema": "public",
"name": "author"
}
}
Args syntax¶
Key | Required | Schema | Description |
---|---|---|---|
table | true | TableName | Name of the table |
is_enum | false | Boolean | When set to true , creates the table as an enum table. |
set_table_is_enum¶
set_table_is_enum
sets whether an already-tracked table should be used as an enum table.
Use table user_role
as an enum table:
POST /v1/query HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin
{
"type": "set_table_is_enum",
"args": {
"table": {
"schema": "public",
"name": "user_role"
},
"is_enum": true
}
}
Args syntax¶
Key | Required | Schema | Description |
---|---|---|---|
table | true | TableName | Name of the table |
is_enum | true | Boolean | Whether or not the table should be used as an enum table. |
track_table v2¶
Version 2 of track_table
is used to add a table/view to the GraphQL schema with configuration. You can customise the root field names.
Add a table/view author
:
POST /v1/query HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin
{
"type": "track_table",
"version": 2,
"args": {
"table": "author",
"configuration": {
"custom_root_fields": {
"select": "Authors",
"select_by_pk": "Author",
"select_aggregate": "AuthorAggregate",
"insert": "AddAuthors",
"insert_one":"AddAuthor",
"update": "UpdateAuthors",
"update_by_pk": "UpdateAuthor",
"delete": "DeleteAuthors",
"delete_by_pk": "DeleteAuthor"
},
"custom_column_names": {
"id": "authorId"
}
}
}
}
Args syntax¶
Key | Required | Schema | Description |
---|---|---|---|
table | true | TableName | Name of the table |
configuration | false | Table Config | Configuration for the table/view |
Table Config¶
Key | Required | Schema | Description |
---|---|---|---|
custom_root_fields | false | Custom Root Fields | Customise the root fields |
custom_column_names | false | CustomColumnNames | Customise the column fields |
Custom Root Fields¶
Key | Required | Schema | Description |
---|---|---|---|
select | false | String |
Customise the <table-name> root field |
select_by_pk | false | String |
Customise the <table-name>_by_pk root field |
select_aggregate | false | String |
Customise the <table-name>_aggregete root field |
insert | false | String |
Customise the insert_<table-name> root field |
insert_one | false | String |
Customise the insert_<table-name>_one root field |
update | false | String |
Customise the update_<table-name> root field |
update_by_pk | false | String |
Customise the update_<table-name>_by_pk root field |
delete | false | String |
Customise the delete_<table-name> root field |
delete_by_pk | false | String |
Customise the delete_<table-name>_by_pk root field |
set_table_custom_fields¶
set_table_custom_fields
in version 2
sets the custom root fields and
custom column names of already tracked table. This will replace the already
present custom fields configuration.
Set custom fields for table/view author
:
POST /v1/query HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin
{
"type": "set_table_custom_fields",
"version": 2,
"args": {
"table": "author",
"custom_root_fields": {
"select": "Authors",
"select_by_pk": "Author",
"select_aggregate": "AuthorAggregate",
"insert": "AddAuthors",
"insert_one":"AddAuthor",
"update": "UpdateAuthors",
"update_by_pk": "UpdateAuthor",
"delete": "DeleteAuthors",
"delete_by_pk": "DeleteAuthor"
},
"custom_column_names": {
"id": "authorId"
}
}
}
Args syntax¶
Key | Required | Schema | Description |
---|---|---|---|
table | true | TableName | Name of the table |
custom_root_fields | false | Custom Root Fields | Customise the root fields |
custom_column_names | false | CustomColumnNames | Customise the column fields |
untrack_table¶
untrack_table
is used to remove a table/view from the GraphQL schema.
Remove a table/view author
:
POST /v1/query HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin
{
"type": "untrack_table",
"args": {
"table": {
"schema": "public",
"name": "author"
},
"cascade": true
}
}