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