Skip to main content
Version: v2.x

Metadata API Reference: Logical models

Introduction​

Track/untrack Logical Models in the Hasura GraphQL Engine.

Supported from

Logical models are supported from v2.26.0.

pg_track_logical_model​

pg_track_logical_model is used to add a Logical Model to the GraphQL schema.

Track a Logical Model as follows:

POST /v1/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin

{
"type": "pg_track_logical_model",
"args": {
"source": "default",
"name": "<name>",
"fields": [
{
"name": "<field name>",
"type": "<PostgreSQL field type>",
"nullable": false | true,
"description": "<optional field description>"
},
...
]
}
}

The type of each field can be either a PostgreSQL data type or references to other Logical Models, and each field can be marked as nullable or not, see LogicalModelType.

Args syntax​

KeyRequiredSchemaDescription
sourcefalseSourceNameName of the source database (default: default)
nametrueLogicalModelNameName of the Logical Model
fieldsfalseArray of LogicalModelFieldConfiguration for each field exposed by the Logical Model GraphQL type

pg_untrack_logical_model​

pg_untrack_logical_model is used to remove a Logical Model from the GraphQL schema.

POST /v1/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin

{
"type": "pg_untrack_logical_model",
"args": {
"source": "default",
"name": "<name>"
}
}

Args syntax​

KeyRequiredSchemaDescription
sourcefalseSourceNameName of the source database (default: default)
nametrueLogicalModelNameName of the Logical Model

pg_create_logical_model_select_permission​

pg_create_logical_model_select_permission is used to add a permission to an existing Logical Model.

POST /v1/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin

{
"type": "pg_create_logical_model_select_permission",
"args": {
"source": "default",
"name": "<logical model name>",
"role": "<role name>",
"permission": {
"columns": "*" | [
"column 1",
"column 2",
...
],
"filter": <boolean expression>
}
}
}

Args syntax​

KeyRequiredSchemaDescription
sourcefalseSourceNameName of the source database (default: default)
nametrueLogicalModelNameName of the Logical Model
roletrueRoleNameName of the role
permissiontrueLogicalModelSelectPermissionPermission configuration

pg_drop_logical_model_select_permission​

pg_drop_logical_model_select_permission is used to drop an existing Logical Model permission.

POST /v1/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin

{
"type": "pg_drop_logical_model_select_permission",
"args": {
"source": "default",
"function": "get_articles",
"role": "user"
}
}

Args syntax​

KeyRequiredSchemaDescription
sourcefalseSourceNameName of the source database (default: default)
nametrueLogicalModelNameName of the Logical Model
roletrueRoleNameName of the role

mssql_track_logical_model​

mssql_track_logical_model is used to add a Logical Model to the GraphQL schema.

Track a Logical Model as follows:

POST /v1/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin

{
"type": "mssql_track_logical_model",
"args": {
"source": "default",
"name": "<name>",
"fields": [
{
"name": "<field name>",
"type": "<SQL Server field type>",
"nullable": false | true,
"description": "<optional field description>"
},
...
]
}
}

The type of each field can be either a SQL Server data type or references to other Logical Models, and each field can be marked as nullable or not, see LogicalModelType.

Args syntax​

KeyRequiredSchemaDescription
sourcefalseSourceNameName of the source database (default: default)
nametrueLogicalModelNameName of the Logical Model
fieldsfalseArray of LogicalModelFieldConfiguration for each field exposed by the Logical Model GraphQL type

mssql_untrack_logical_model​

mssql_untrack_logical_model is used to remove a Logical Model from the GraphQL schema.

POST /v1/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin

{
"type": "mssql_untrack_logical_model",
"args": {
"source": "default",
"name": "<name>"
}
}

Args syntax​

KeyRequiredSchemaDescription
sourcefalseSourceNameName of the source database (default: default)
nametrueLogicalModelNameName of the Logical Model

mssql_create_logical_model_select_permission​

mssql_create_logical_model_select_permission is used to add a permission to an existing Logical Model.

POST /v1/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin

{
"type": "mssql_create_logical_model_select_permission",
"args": {
"source": "default",
"name": "<logical model name>",
"role": "<role name>",
"permission": {
"columns": "*" | [
"column 1",
"column 2",
...
],
"filter": <boolean expression>
}
}
}

Args syntax​

KeyRequiredSchemaDescription
sourcefalseSourceNameName of the source database (default: default)
nametrueLogicalModelNameName of the Logical Model
roletrueRoleNameName of the role
permissiontrueLogicalModelSelectPermissionPermission configuration

mssql_drop_logical_model_select_permission​

mssql_drop_logical_model_select_permission is used to drop an existing Logical Model permission.

POST /v1/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin

{
"type": "mssql_drop_logical_model_select_permission",
"args": {
"source": "default",
"function": "get_articles",
"role": "user"
}
}

Args syntax​

KeyRequiredSchemaDescription
sourcefalseSourceNameName of the source database (default: default)
nametrueLogicalModelNameName of the Logical Model
roletrueRoleNameName of the role

bigquery_track_logical_model​

bigquery_track_logical_model is used to add a Logical Model to the GraphQL schema.

Track a Logical Model as follows:

POST /v1/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin

{
"type": "bigquery_track_logical_model",
"args": {
"source": "default",
"name": "<name>",
"fields": [
{
"name": "<field name>",
"type": "<BigQuery field type>",
"nullable": false | true,
"description": "<optional field description>"
},
...
]
}
}

The type of each field can be either a BigQuery data type or references to other Logical Models, and each field can be marked as nullable or not, see LogicalModelType.

Args syntax​

KeyRequiredSchemaDescription
sourcefalseSourceNameName of the source database (default: default)
nametrueLogicalModelNameName of the Logical Model
fieldsfalseArray of LogicalModelFieldConfiguration for each field exposed by the Logical Model GraphQL type

bigquery_untrack_logical_model​

bigquery_untrack_logical_model is used to remove a Logical Model from the GraphQL schema.

POST /v1/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin

{
"type": "bigquery_untrack_logical_model",
"args": {
"source": "default",
"name": "<name>"
}
}

Args syntax​

KeyRequiredSchemaDescription
sourcefalseSourceNameName of the source database (default: default)
nametrueLogicalModelNameName of the Logical Model

bigquery_create_logical_model_select_permission​

bigquery_create_logical_model_select_permission is used to add a permission to an existing Logical Model.

POST /v1/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin

{
"type": "bigquery_create_logical_model_select_permission",
"args": {
"source": "default",
"name": "<logical model name>",
"role": "<role name>",
"permission": {
"columns": "*" | [
"column 1",
"column 2",
...
],
"filter": <boolean expression>
}
}
}

Args syntax​

KeyRequiredSchemaDescription
sourcefalseSourceNameName of the source database (default: default)
nametrueLogicalModelNameName of the Logical Model
roletrueRoleNameName of the role
permissiontrueLogicalModelSelectPermissionPermission configuration

bigquery_drop_logical_model_select_permission​

bigquery_drop_logical_model_select_permission is used to drop an existing Logical Model permission.

POST /v1/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin

{
"type": "bigquery_drop_logical_model_select_permission",
"args": {
"source": "default",
"function": "get_articles",
"role": "user"
}
}

Args syntax​

KeyRequiredSchemaDescription
sourcefalseSourceNameName of the source database (default: default)
nametrueLogicalModelNameName of the Logical Model
roletrueRoleNameName of the role