Schema/Metadata API Reference: Tables/Views

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
    }
}

Args syntax

Key Required Schema Description
table true TableName Name of the table
cascade false Boolean When set to true, the effect (if possible) is cascaded to any metadata dependent objects (relationships, permissions, templates)