The Datajunction API Specification

The DataJunction API Specification #

License: MIT License

List Catalogs #

GET /catalogs/

List all available catalogs

Example responses

200 Response

[
  {
    "name": "string",
    "engines": []
  }
]

Responses

Status Meaning Description Schema
200 OK Successful Response Inline

Response Schema

Status Code 200

Response List Catalogs Catalogs Get

Name Type Required Restrictions Description
Response List Catalogs Catalogs Get [CatalogInfo] false none [Class for catalog creation]
» CatalogInfo CatalogInfo false none Class for catalog creation
»» name string true none none
»» engines [EngineInfo] false none [Class for engine creation]
»»» EngineInfo EngineInfo false none Class for engine creation
»»»» name string true none none
»»»» version string true none none
»»»» uri string false none none

Add A Catalog #

POST /catalogs/

Add a Catalog

Body parameter

{
  "name": "string",
  "engines": []
}

Parameters

Name In Type Required Description
body body CatalogInfo true none

Example responses

201 Response

{
  "name": "string",
  "engines": []
}

Responses

Status Meaning Description Schema
201 Created Successful Response CatalogInfo
422 Unprocessable Entity Validation Error HTTPValidationError

Get A Catalog #

GET /catalogs/{name}/

Return a catalog by name

Parameters

Name In Type Required Description
name path string true none

Example responses

200 Response

{
  "name": "string",
  "engines": []
}

Responses

Status Meaning Description Schema
200 OK Successful Response CatalogInfo
422 Unprocessable Entity Validation Error HTTPValidationError

Add Engines To A Catalog #

POST /catalogs/{name}/engines/

Attach one or more engines to a catalog

Body parameter

[
  {
    "name": "string",
    "version": "string",
    "uri": "string"
  }
]

Parameters

Name In Type Required Description
name path string true none

Example responses

201 Response

{
  "name": "string",
  "engines": []
}

Responses

Status Meaning Description Schema
201 Created Successful Response CatalogInfo
422 Unprocessable Entity Validation Error HTTPValidationError

List Engines #

GET /engines/

List all available engines

Example responses

200 Response

[
  {
    "name": "string",
    "version": "string",
    "uri": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK Successful Response Inline

Response Schema

Status Code 200

Response List Engines Engines Get

Name Type Required Restrictions Description
Response List Engines Engines Get [EngineInfo] false none [Class for engine creation]
» EngineInfo EngineInfo false none Class for engine creation
»» name string true none none
»» version string true none none
»» uri string false none none

Add An Engine #

POST /engines/

Add an Engine

Body parameter

{
  "name": "string",
  "version": "string",
  "uri": "string"
}

Parameters

Name In Type Required Description
body body EngineInfo true none

Example responses

201 Response

{
  "name": "string",
  "version": "string",
  "uri": "string"
}

Responses

Status Meaning Description Schema
201 Created Successful Response EngineInfo
422 Unprocessable Entity Validation Error HTTPValidationError

Get An Engine #

GET /engines/{name}/{version}/

Return an engine by name and version

Parameters

Name In Type Required Description
name path string true none
version path string true none

Example responses

200 Response

{
  "name": "string",
  "version": "string",
  "uri": "string"
}

Responses

Status Meaning Description Schema
200 OK Successful Response EngineInfo
422 Unprocessable Entity Validation Error HTTPValidationError

List Metrics #

GET /metrics/

List all available metrics.

Example responses

200 Response

[
  {
    "id": 0,
    "name": "string",
    "display_name": "string",
    "current_version": "string",
    "description": "",
    "created_at": "2019-08-24T14:15:22Z",
    "updated_at": "2019-08-24T14:15:22Z",
    "query": "string",
    "dimensions": [
      "string"
    ]
  }
]

Responses

Status Meaning Description Schema
200 OK Successful Response Inline

Response Schema

Status Code 200

Response List Metrics Metrics Get

Name Type Required Restrictions Description
Response List Metrics Metrics Get [Metric] false none [Class for a metric.]
» Metric Metric false none Class for a metric.
»» id integer true none none
»» name string true none none
»» display_name string true none none
»» current_version string true none none
»» description string false none none
»» created_at string(date-time) true none none
»» updated_at string(date-time) true none none
»» query string true none none
»» dimensions [string] true none none

Get A Metric #

GET /metrics/{name}/

Return a metric by name.

Parameters

Name In Type Required Description
name path string true none

Example responses

200 Response

{
  "id": 0,
  "name": "string",
  "display_name": "string",
  "current_version": "string",
  "description": "",
  "created_at": "2019-08-24T14:15:22Z",
  "updated_at": "2019-08-24T14:15:22Z",
  "query": "string",
  "dimensions": [
    "string"
  ]
}

Responses

Status Meaning Description Schema
200 OK Successful Response Metric
422 Unprocessable Entity Validation Error HTTPValidationError

Get Common Dimensions #

GET /metrics/common/dimensions/

Return common dimensions for a set of metrics.

Parameters

Name In Type Required Description
metric query array[string] false none

Example responses

200 Response

[
  "string"
]

Responses

Status Meaning Description Schema
200 OK Successful Response Inline
422 Unprocessable Entity Validation Error HTTPValidationError

Response Schema

Status Code 200

Response Get Common Dimensions Metrics Common Dimensions Get

Name Type Required Restrictions Description
Response Get Common Dimensions Metrics Common Dimensions Get [string] false none none

Build A Dj Query #

GET /query/{sql}

Return SQL for a DJ Query.

A database can be optionally specified. If no database is specified the optimal one will be used.

Parameters

Name In Type Required Description
sql path string true none

Example responses

200 Response

{
  "sql": "string",
  "columns": [
    {
      "name": "string",
      "type": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Successful Response TranslatedSQL
422 Unprocessable Entity Validation Error HTTPValidationError

Validate A Node #

POST /nodes/validate/

Validate a node.

Body parameter

{
  "name": "string",
  "display_name": "string",
  "type": "source",
  "description": "",
  "query": "string",
  "mode": "published"
}

Example responses

200 Response

{
  "message": "string",
  "status": "valid",
  "node_revision": {
    "name": "string",
    "display_name": "string",
    "type": "source",
    "description": "",
    "query": "string",
    "mode": "published",
    "id": 0,
    "version": "v0.1",
    "node_id": 0,
    "catalog_id": 0,
    "schema_": "string",
    "table": "string",
    "status": "invalid",
    "updated_at": "2019-08-24T14:15:22Z"
  },
  "dependencies": [
    {
      "node_revision_id": 0,
      "node_id": 0,
      "type": "source",
      "name": "string",
      "display_name": "string",
      "version": "string",
      "status": "valid",
      "mode": "published",
      "catalog": {
        "id": 0,
        "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
        "name": "string",
        "created_at": "2019-08-24T14:15:22Z",
        "updated_at": "2019-08-24T14:15:22Z",
        "extra_params": {}
      },
      "schema_": "string",
      "table": "string",
      "description": "",
      "query": "string",
      "availability": {
        "catalog": "string",
        "schema_": "string",
        "table": "string",
        "valid_through_ts": 0,
        "max_partition": [
          "string"
        ],
        "min_partition": [
          "string"
        ],
        "id": 0,
        "updated_at": "2019-08-24T14:15:22Z"
      },
      "columns": [
        {
          "name": "string",
          "type": {},
          "attributes": [
            {
              "attribute_type": {
                "namespace": "string",
                "name": "string"
              }
            }
          ],
          "dimension": {
            "name": "string"
          }
        }
      ],
      "updated_at": "2019-08-24T14:15:22Z",
      "materialization_configs": [
        {
          "engine": {
            "name": "string",
            "version": "string",
            "uri": "string"
          },
          "config": "string"
        }
      ],
      "parents": [
        {
          "name": "string"
        }
      ]
    }
  ],
  "columns": [
    {
      "id": 0,
      "name": "string",
      "type": {},
      "dimension_id": 0,
      "dimension_column": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Successful Response NodeValidation
422 Unprocessable Entity Validation Error HTTPValidationError

Set Column Attributes #

POST /nodes/{node_name}/attributes/

Set column attributes for the node.

Body parameter

[
  {
    "attribute_type_namespace": "system",
    "attribute_type_name": "string",
    "column_name": "string"
  }
]

Parameters

Name In Type Required Description
node_name path string true none

Example responses

201 Response

[
  {
    "name": "string",
    "type": {},
    "attributes": [
      {
        "attribute_type": {
          "namespace": "string",
          "name": "string"
        }
      }
    ],
    "dimension": {
      "name": "string"
    }
  }
]

Responses

Status Meaning Description Schema
201 Created Successful Response Inline
422 Unprocessable Entity Validation Error HTTPValidationError

Response Schema

Status Code 201

Response Set Column Attributes Nodes Node Name Attributes Post

Name Type Required Restrictions Description
Response Set Column Attributes Nodes Node Name Attributes Post [ColumnOutput] false none [A simplified column schema, without ID or dimensions.]
» ColumnOutput ColumnOutput false none A simplified column schema, without ID or dimensions.
»» name string true none none
»» type ColumnType true none Base type for all Column Types
»» attributes [AttributeOutput] true none [Column attribute output.]
»»» AttributeOutput AttributeOutput false none Column attribute output.
»»»» attribute_type AttributeTypeName true none Attribute type name.
»»»»» namespace string true none none
»»»»» name string true none none
»» dimension NodeNameOutput false none Node name only
»»» name string true none none

List Nodes #

GET /nodes/

List the available nodes.

Example responses

200 Response

[
  {
    "current": {
      "node_revision_id": 0,
      "node_id": 0,
      "type": "source",
      "name": "string",
      "display_name": "string",
      "version": "string",
      "status": "valid",
      "mode": "published",
      "catalog": {
        "id": 0,
        "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
        "name": "string",
        "created_at": "2019-08-24T14:15:22Z",
        "updated_at": "2019-08-24T14:15:22Z",
        "extra_params": {}
      },
      "schema_": "string",
      "table": "string",
      "description": "",
      "query": "string",
      "availability": {
        "catalog": "string",
        "schema_": "string",
        "table": "string",
        "valid_through_ts": 0,
        "max_partition": [
          "string"
        ],
        "min_partition": [
          "string"
        ],
        "id": 0,
        "updated_at": "2019-08-24T14:15:22Z"
      },
      "columns": [
        {
          "name": "string",
          "type": {},
          "attributes": [
            {
              "attribute_type": {
                "namespace": "string",
                "name": "string"
              }
            }
          ],
          "dimension": {
            "name": "string"
          }
        }
      ],
      "updated_at": "2019-08-24T14:15:22Z",
      "materialization_configs": [
        {
          "engine": {
            "name": "string",
            "version": "string",
            "uri": "string"
          },
          "config": "string"
        }
      ],
      "parents": [
        {
          "name": "string"
        }
      ]
    },
    "created_at": "2019-08-24T14:15:22Z",
    "tags": []
  }
]

Responses

Status Meaning Description Schema
200 OK Successful Response Inline

Response Schema

Status Code 200

Response List Nodes Nodes Get

Name Type Required Restrictions Description
Response List Nodes Nodes Get [NodeOutput] false none [Output for a node that shows the current revision.]
» NodeOutput NodeOutput false none Output for a node that shows the current revision.
»» current NodeRevisionOutput true none Output for a node revision with information about columns and if it is a metric.
»»» node_revision_id integer true none none
»»» node_id integer true none none
»»» type NodeType true none Node type.

A node can have 4 types, currently:

1. SOURCE nodes are root nodes in the DAG, and point to tables or views in a DB.
2. TRANSFORM nodes are SQL transformations, reading from SOURCE/TRANSFORM nodes.
3. METRIC nodes are leaves in the DAG, and have a single aggregation query.
4. DIMENSION nodes are special SOURCE nodes that can be auto-joined with METRICS.
5. CUBE nodes contain a reference to a set of METRICS and a set of DIMENSIONS.
»»» name string true none none
»»» display_name string true none none
»»» version string true none none
»»» status NodeStatus true none Node status.

A node can have one of the following statuses:

1. VALID - All references to other nodes and node columns are valid
2. INVALID - One or more parent nodes are incompatible or do not exist
»»» mode NodeMode true none Node mode.

A node can be in one of the following modes:

1. PUBLISHED - Must be valid and not cause any child nodes to be invalid
2. DRAFT - Can be invalid, have invalid parents, and include dangling references
»»» catalog Catalog false none A catalog.
»»»» id integer false none none
»»»» uuid string(uuid) false none none
»»»» name string true none none
»»»» created_at string(date-time) false none none
»»»» updated_at string(date-time) false none none
»»»» extra_params object false none none
»»» schema_ string false none none
»»» table string false none none
»»» description string false none none
»»» query string false none none
»»» availability AvailabilityState false none The availability of materialized data for a node
»»»» catalog string true none none
»»»» schema_ string false none none
»»»» table string true none none
»»»» valid_through_ts integer true none none
»»»» max_partition [string] true none none
»»»» min_partition [string] true none none
»»»» id integer false none none
»»»» updated_at string(date-time) false none none
»»» columns [ColumnOutput] true none [A simplified column schema, without ID or dimensions.]
»»»» ColumnOutput ColumnOutput false none A simplified column schema, without ID or dimensions.
»»»»» name string true none none
»»»»» type ColumnType true none Base type for all Column Types
»»»»» attributes [AttributeOutput] true none [Column attribute output.]
»»»»»» AttributeOutput AttributeOutput false none Column attribute output.
»»»»»»» attribute_type AttributeTypeName true none Attribute type name.
»»»»»»»» namespace string true none none
»»»»»»»» name string true none none
»»»»» dimension NodeNameOutput false none Node name only
»»»»»» name string true none none
»»» updated_at string(date-time) true none none
»»» materialization_configs [MaterializationConfigOutput] true none [Output for materialization config.]
»»»» MaterializationConfigOutput MaterializationConfigOutput false none Output for materialization config.
»»»»» engine EngineInfo true none Class for engine creation
»»»»»» name string true none none
»»»»»» version string true none none
»»»»»» uri string false none none
»»»»» config string true none none
»»» parents [NodeNameOutput] true none [Node name only]
»»»» NodeNameOutput NodeNameOutput false none Node name only
»» created_at string(date-time) true none none
»» tags [Tag] false none [A tag.]
»»» Tag Tag false none A tag.
»»»» description string true none none
»»»» tag_metadata object false none none
»»»» name string true none none
»»»» display_name string false none none
»»»» tag_type string true none none
»»»» id integer false none none

Enumerated Values #

Property Value
type source
type transform
type metric
type dimension
type cube
status valid
status invalid
mode published
mode draft

Get A Node #

GET /nodes/{name}/

Show the active version of the specified node.

Parameters

Name In Type Required Description
name path string true none

Example responses

200 Response

{
  "current": {
    "node_revision_id": 0,
    "node_id": 0,
    "type": "source",
    "name": "string",
    "display_name": "string",
    "version": "string",
    "status": "valid",
    "mode": "published",
    "catalog": {
      "id": 0,
      "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
      "name": "string",
      "created_at": "2019-08-24T14:15:22Z",
      "updated_at": "2019-08-24T14:15:22Z",
      "extra_params": {}
    },
    "schema_": "string",
    "table": "string",
    "description": "",
    "query": "string",
    "availability": {
      "catalog": "string",
      "schema_": "string",
      "table": "string",
      "valid_through_ts": 0,
      "max_partition": [
        "string"
      ],
      "min_partition": [
        "string"
      ],
      "id": 0,
      "updated_at": "2019-08-24T14:15:22Z"
    },
    "columns": [
      {
        "name": "string",
        "type": {},
        "attributes": [
          {
            "attribute_type": {
              "namespace": "string",
              "name": "string"
            }
          }
        ],
        "dimension": {
          "name": "string"
        }
      }
    ],
    "updated_at": "2019-08-24T14:15:22Z",
    "materialization_configs": [
      {
        "engine": {
          "name": "string",
          "version": "string",
          "uri": "string"
        },
        "config": "string"
      }
    ],
    "parents": [
      {
        "name": "string"
      }
    ]
  },
  "created_at": "2019-08-24T14:15:22Z",
  "tags": []
}

Responses

Status Meaning Description Schema
200 OK Successful Response NodeOutput
422 Unprocessable Entity Validation Error HTTPValidationError

Delete A Node #

DELETE /nodes/{name}/

Delete the specified node.

Parameters

Name In Type Required Description
name path string true none

Example responses

422 Response

{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Successful Response None
422 Unprocessable Entity Validation Error HTTPValidationError

Update A Node #

PATCH /nodes/{name}/

Update a node.

Body parameter

{
  "catalog": "string",
  "schema_": "string",
  "table": "string",
  "columns": {
    "property1": {
      "type": {},
      "dimension": "string"
    },
    "property2": {
      "type": {},
      "dimension": "string"
    }
  },
  "display_name": "string",
  "description": "string",
  "mode": "published",
  "query": "string"
}

Parameters

Name In Type Required Description
name path string true none
body body UpdateNode true none

Example responses

200 Response

{
  "current": {
    "node_revision_id": 0,
    "node_id": 0,
    "type": "source",
    "name": "string",
    "display_name": "string",
    "version": "string",
    "status": "valid",
    "mode": "published",
    "catalog": {
      "id": 0,
      "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
      "name": "string",
      "created_at": "2019-08-24T14:15:22Z",
      "updated_at": "2019-08-24T14:15:22Z",
      "extra_params": {}
    },
    "schema_": "string",
    "table": "string",
    "description": "",
    "query": "string",
    "availability": {
      "catalog": "string",
      "schema_": "string",
      "table": "string",
      "valid_through_ts": 0,
      "max_partition": [
        "string"
      ],
      "min_partition": [
        "string"
      ],
      "id": 0,
      "updated_at": "2019-08-24T14:15:22Z"
    },
    "columns": [
      {
        "name": "string",
        "type": {},
        "attributes": [
          {
            "attribute_type": {
              "namespace": "string",
              "name": "string"
            }
          }
        ],
        "dimension": {
          "name": "string"
        }
      }
    ],
    "updated_at": "2019-08-24T14:15:22Z",
    "materialization_configs": [
      {
        "engine": {
          "name": "string",
          "version": "string",
          "uri": "string"
        },
        "config": "string"
      }
    ],
    "parents": [
      {
        "name": "string"
      }
    ]
  },
  "created_at": "2019-08-24T14:15:22Z",
  "tags": []
}

Responses

Status Meaning Description Schema
200 OK Successful Response NodeOutput
422 Unprocessable Entity Validation Error HTTPValidationError

Upsert A Materialization Config #

POST /nodes/{name}/materialization/

Update materialization config of the specified node.

Body parameter

{
  "engine_name": "string",
  "engine_version": "string",
  "config": "string"
}

Parameters

Name In Type Required Description
name path string true none
body body UpsertMaterializationConfig true none

Example responses

201 Response

null

Responses

Status Meaning Description Schema
201 Created Successful Response Inline
422 Unprocessable Entity Validation Error HTTPValidationError

Response Schema

List Node Revisions #

GET /nodes/{name}/revisions/

List all revisions for the node.

Parameters

Name In Type Required Description
name path string true none

Example responses

200 Response

[
  {
    "node_revision_id": 0,
    "node_id": 0,
    "type": "source",
    "name": "string",
    "display_name": "string",
    "version": "string",
    "status": "valid",
    "mode": "published",
    "catalog": {
      "id": 0,
      "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
      "name": "string",
      "created_at": "2019-08-24T14:15:22Z",
      "updated_at": "2019-08-24T14:15:22Z",
      "extra_params": {}
    },
    "schema_": "string",
    "table": "string",
    "description": "",
    "query": "string",
    "availability": {
      "catalog": "string",
      "schema_": "string",
      "table": "string",
      "valid_through_ts": 0,
      "max_partition": [
        "string"
      ],
      "min_partition": [
        "string"
      ],
      "id": 0,
      "updated_at": "2019-08-24T14:15:22Z"
    },
    "columns": [
      {
        "name": "string",
        "type": {},
        "attributes": [
          {
            "attribute_type": {
              "namespace": "string",
              "name": "string"
            }
          }
        ],
        "dimension": {
          "name": "string"
        }
      }
    ],
    "updated_at": "2019-08-24T14:15:22Z",
    "materialization_configs": [
      {
        "engine": {
          "name": "string",
          "version": "string",
          "uri": "string"
        },
        "config": "string"
      }
    ],
    "parents": [
      {
        "name": "string"
      }
    ]
  }
]

Responses

Status Meaning Description Schema
200 OK Successful Response Inline
422 Unprocessable Entity Validation Error HTTPValidationError

Response Schema

Status Code 200

Response List Node Revisions Nodes Name Revisions Get

Name Type Required Restrictions Description
Response List Node Revisions Nodes Name Revisions Get [NodeRevisionOutput] false none [Output for a node revision with information about columns and if it is a metric.]
» NodeRevisionOutput NodeRevisionOutput false none Output for a node revision with information about columns and if it is a metric.
»» node_revision_id integer true none none
»» node_id integer true none none
»» type NodeType true none Node type.

A node can have 4 types, currently:

1. SOURCE nodes are root nodes in the DAG, and point to tables or views in a DB.
2. TRANSFORM nodes are SQL transformations, reading from SOURCE/TRANSFORM nodes.
3. METRIC nodes are leaves in the DAG, and have a single aggregation query.
4. DIMENSION nodes are special SOURCE nodes that can be auto-joined with METRICS.
5. CUBE nodes contain a reference to a set of METRICS and a set of DIMENSIONS.
»» name string true none none
»» display_name string true none none
»» version string true none none
»» status NodeStatus true none Node status.

A node can have one of the following statuses:

1. VALID - All references to other nodes and node columns are valid
2. INVALID - One or more parent nodes are incompatible or do not exist
»» mode NodeMode true none Node mode.

A node can be in one of the following modes:

1. PUBLISHED - Must be valid and not cause any child nodes to be invalid
2. DRAFT - Can be invalid, have invalid parents, and include dangling references
»» catalog Catalog false none A catalog.
»»» id integer false none none
»»» uuid string(uuid) false none none
»»» name string true none none
»»» created_at string(date-time) false none none
»»» updated_at string(date-time) false none none
»»» extra_params object false none none
»» schema_ string false none none
»» table string false none none
»» description string false none none
»» query string false none none
»» availability AvailabilityState false none The availability of materialized data for a node
»»» catalog string true none none
»»» schema_ string false none none
»»» table string true none none
»»» valid_through_ts integer true none none
»»» max_partition [string] true none none
»»» min_partition [string] true none none
»»» id integer false none none
»»» updated_at string(date-time) false none none
»» columns [ColumnOutput] true none [A simplified column schema, without ID or dimensions.]
»»» ColumnOutput ColumnOutput false none A simplified column schema, without ID or dimensions.
»»»» name string true none none
»»»» type ColumnType true none Base type for all Column Types
»»»» attributes [AttributeOutput] true none [Column attribute output.]
»»»»» AttributeOutput AttributeOutput false none Column attribute output.
»»»»»» attribute_type AttributeTypeName true none Attribute type name.
»»»»»»» namespace string true none none
»»»»»»» name string true none none
»»»» dimension NodeNameOutput false none Node name only
»»»»» name string true none none
»» updated_at string(date-time) true none none
»» materialization_configs [MaterializationConfigOutput] true none [Output for materialization config.]
»»» MaterializationConfigOutput MaterializationConfigOutput false none Output for materialization config.
»»»» engine EngineInfo true none Class for engine creation
»»»»» name string true none none
»»»»» version string true none none
»»»»» uri string false none none
»»»» config string true none none
»» parents [NodeNameOutput] true none [Node name only]
»»» NodeNameOutput NodeNameOutput false none Node name only

Enumerated Values #

Property Value
type source
type transform
type metric
type dimension
type cube
status valid
status invalid
mode published
mode draft

Create A Source #

POST /nodes/source/

Create a source node. If columns are not provided, the source node’s schema will be inferred using the configured query service.

Body parameter

{
  "catalog": "string",
  "schema_": "string",
  "table": "string",
  "columns": {
    "property1": {
      "type": {},
      "dimension": "string"
    },
    "property2": {
      "type": {},
      "dimension": "string"
    }
  },
  "display_name": "string",
  "description": "string",
  "mode": "published",
  "name": "string"
}

Parameters

Name In Type Required Description
body body CreateSourceNode true none

Example responses

201 Response

{
  "current": {
    "node_revision_id": 0,
    "node_id": 0,
    "type": "source",
    "name": "string",
    "display_name": "string",
    "version": "string",
    "status": "valid",
    "mode": "published",
    "catalog": {
      "id": 0,
      "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
      "name": "string",
      "created_at": "2019-08-24T14:15:22Z",
      "updated_at": "2019-08-24T14:15:22Z",
      "extra_params": {}
    },
    "schema_": "string",
    "table": "string",
    "description": "",
    "query": "string",
    "availability": {
      "catalog": "string",
      "schema_": "string",
      "table": "string",
      "valid_through_ts": 0,
      "max_partition": [
        "string"
      ],
      "min_partition": [
        "string"
      ],
      "id": 0,
      "updated_at": "2019-08-24T14:15:22Z"
    },
    "columns": [
      {
        "name": "string",
        "type": {},
        "attributes": [
          {
            "attribute_type": {
              "namespace": "string",
              "name": "string"
            }
          }
        ],
        "dimension": {
          "name": "string"
        }
      }
    ],
    "updated_at": "2019-08-24T14:15:22Z",
    "materialization_configs": [
      {
        "engine": {
          "name": "string",
          "version": "string",
          "uri": "string"
        },
        "config": "string"
      }
    ],
    "parents": [
      {
        "name": "string"
      }
    ]
  },
  "created_at": "2019-08-24T14:15:22Z",
  "tags": []
}

Responses

Status Meaning Description Schema
201 Created Successful Response NodeOutput
422 Unprocessable Entity Validation Error HTTPValidationError

Create A Node #

POST /nodes/transform/

Create a node.

Body parameter

{
  "query": "string",
  "display_name": "string",
  "description": "string",
  "mode": "published",
  "name": "string"
}

Parameters

Name In Type Required Description
body body CreateNode true none

Example responses

201 Response

{
  "current": {
    "node_revision_id": 0,
    "node_id": 0,
    "type": "source",
    "name": "string",
    "display_name": "string",
    "version": "string",
    "status": "valid",
    "mode": "published",
    "catalog": {
      "id": 0,
      "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
      "name": "string",
      "created_at": "2019-08-24T14:15:22Z",
      "updated_at": "2019-08-24T14:15:22Z",
      "extra_params": {}
    },
    "schema_": "string",
    "table": "string",
    "description": "",
    "query": "string",
    "availability": {
      "catalog": "string",
      "schema_": "string",
      "table": "string",
      "valid_through_ts": 0,
      "max_partition": [
        "string"
      ],
      "min_partition": [
        "string"
      ],
      "id": 0,
      "updated_at": "2019-08-24T14:15:22Z"
    },
    "columns": [
      {
        "name": "string",
        "type": {},
        "attributes": [
          {
            "attribute_type": {
              "namespace": "string",
              "name": "string"
            }
          }
        ],
        "dimension": {
          "name": "string"
        }
      }
    ],
    "updated_at": "2019-08-24T14:15:22Z",
    "materialization_configs": [
      {
        "engine": {
          "name": "string",
          "version": "string",
          "uri": "string"
        },
        "config": "string"
      }
    ],
    "parents": [
      {
        "name": "string"
      }
    ]
  },
  "created_at": "2019-08-24T14:15:22Z",
  "tags": []
}

Responses

Status Meaning Description Schema
201 Created Successful Response NodeOutput
422 Unprocessable Entity Validation Error HTTPValidationError

Create A Cube #

POST /nodes/cube/

Create a node.

Body parameter

{
  "display_name": "string",
  "cube_elements": [
    "string"
  ],
  "description": "string",
  "mode": "published",
  "name": "string"
}

Parameters

Name In Type Required Description
body body CreateCubeNode true none

Example responses

201 Response

{
  "current": {
    "node_revision_id": 0,
    "node_id": 0,
    "type": "source",
    "name": "string",
    "display_name": "string",
    "version": "string",
    "status": "valid",
    "mode": "published",
    "catalog": {
      "id": 0,
      "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
      "name": "string",
      "created_at": "2019-08-24T14:15:22Z",
      "updated_at": "2019-08-24T14:15:22Z",
      "extra_params": {}
    },
    "schema_": "string",
    "table": "string",
    "description": "",
    "query": "string",
    "availability": {
      "catalog": "string",
      "schema_": "string",
      "table": "string",
      "valid_through_ts": 0,
      "max_partition": [
        "string"
      ],
      "min_partition": [
        "string"
      ],
      "id": 0,
      "updated_at": "2019-08-24T14:15:22Z"
    },
    "columns": [
      {
        "name": "string",
        "type": {},
        "attributes": [
          {
            "attribute_type": {
              "namespace": "string",
              "name": "string"
            }
          }
        ],
        "dimension": {
          "name": "string"
        }
      }
    ],
    "updated_at": "2019-08-24T14:15:22Z",
    "materialization_configs": [
      {
        "engine": {
          "name": "string",
          "version": "string",
          "uri": "string"
        },
        "config": "string"
      }
    ],
    "parents": [
      {
        "name": "string"
      }
    ]
  },
  "created_at": "2019-08-24T14:15:22Z",
  "tags": []
}

Responses

Status Meaning Description Schema
201 Created Successful Response NodeOutput
422 Unprocessable Entity Validation Error HTTPValidationError

POST /nodes/{name}/columns/{column}/

Add information to a node column

Name In Type Required Description
name path string true none
column path string true none
dimension query string false none
dimension_column query string false none

Example responses

201 Response

null
Status Meaning Description Schema
201 Created Successful Response Inline
422 Unprocessable Entity Validation Error HTTPValidationError

Tag A Node #

POST /nodes/{name}/tag/

Add a tag to a node

Parameters

Name In Type Required Description
name path string true none
tag_name query string true none

Example responses

201 Response

null

Responses

Status Meaning Description Schema
201 Created Successful Response Inline
422 Unprocessable Entity Validation Error HTTPValidationError

Response Schema

Calculate Node Similarity #

GET /nodes/similarity/{node1_name}/{node2_name}

Compare two nodes by how similar their queries are

Parameters

Name In Type Required Description
node1_name path string true none
node2_name path string true none

Example responses

200 Response

null

Responses

Status Meaning Description Schema
200 OK Successful Response Inline
422 Unprocessable Entity Validation Error HTTPValidationError

Response Schema

List Downstream Nodes #

GET /nodes/{name}/downstream/

List all nodes that are downstream from the given node, filterable by type.

Parameters

Name In Type Required Description
name path string true none
node_type query NodeType false none

Enumerated Values #

Parameter Value
node_type source
node_type transform
node_type metric
node_type dimension
node_type cube

Example responses

200 Response

[
  {
    "current": {
      "node_revision_id": 0,
      "node_id": 0,
      "type": "source",
      "name": "string",
      "display_name": "string",
      "version": "string",
      "status": "valid",
      "mode": "published",
      "catalog": {
        "id": 0,
        "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
        "name": "string",
        "created_at": "2019-08-24T14:15:22Z",
        "updated_at": "2019-08-24T14:15:22Z",
        "extra_params": {}
      },
      "schema_": "string",
      "table": "string",
      "description": "",
      "query": "string",
      "availability": {
        "catalog": "string",
        "schema_": "string",
        "table": "string",
        "valid_through_ts": 0,
        "max_partition": [
          "string"
        ],
        "min_partition": [
          "string"
        ],
        "id": 0,
        "updated_at": "2019-08-24T14:15:22Z"
      },
      "columns": [
        {
          "name": "string",
          "type": {},
          "attributes": [
            {
              "attribute_type": {
                "namespace": "string",
                "name": "string"
              }
            }
          ],
          "dimension": {
            "name": "string"
          }
        }
      ],
      "updated_at": "2019-08-24T14:15:22Z",
      "materialization_configs": [
        {
          "engine": {
            "name": "string",
            "version": "string",
            "uri": "string"
          },
          "config": "string"
        }
      ],
      "parents": [
        {
          "name": "string"
        }
      ]
    },
    "created_at": "2019-08-24T14:15:22Z",
    "tags": []
  }
]

Responses

Status Meaning Description Schema
200 OK Successful Response Inline
422 Unprocessable Entity Validation Error HTTPValidationError

Response Schema

Status Code 200

Response List Downstream Nodes Nodes Name Downstream Get

Name Type Required Restrictions Description
Response List Downstream Nodes Nodes Name Downstream Get [NodeOutput] false none [Output for a node that shows the current revision.]
» NodeOutput NodeOutput false none Output for a node that shows the current revision.
»» current NodeRevisionOutput true none Output for a node revision with information about columns and if it is a metric.
»»» node_revision_id integer true none none
»»» node_id integer true none none
»»» type NodeType true none Node type.

A node can have 4 types, currently:

1. SOURCE nodes are root nodes in the DAG, and point to tables or views in a DB.
2. TRANSFORM nodes are SQL transformations, reading from SOURCE/TRANSFORM nodes.
3. METRIC nodes are leaves in the DAG, and have a single aggregation query.
4. DIMENSION nodes are special SOURCE nodes that can be auto-joined with METRICS.
5. CUBE nodes contain a reference to a set of METRICS and a set of DIMENSIONS.
»»» name string true none none
»»» display_name string true none none
»»» version string true none none
»»» status NodeStatus true none Node status.

A node can have one of the following statuses:

1. VALID - All references to other nodes and node columns are valid
2. INVALID - One or more parent nodes are incompatible or do not exist
»»» mode NodeMode true none Node mode.

A node can be in one of the following modes:

1. PUBLISHED - Must be valid and not cause any child nodes to be invalid
2. DRAFT - Can be invalid, have invalid parents, and include dangling references
»»» catalog Catalog false none A catalog.
»»»» id integer false none none
»»»» uuid string(uuid) false none none
»»»» name string true none none
»»»» created_at string(date-time) false none none
»»»» updated_at string(date-time) false none none
»»»» extra_params object false none none
»»» schema_ string false none none
»»» table string false none none
»»» description string false none none
»»» query string false none none
»»» availability AvailabilityState false none The availability of materialized data for a node
»»»» catalog string true none none
»»»» schema_ string false none none
»»»» table string true none none
»»»» valid_through_ts integer true none none
»»»» max_partition [string] true none none
»»»» min_partition [string] true none none
»»»» id integer false none none
»»»» updated_at string(date-time) false none none
»»» columns [ColumnOutput] true none [A simplified column schema, without ID or dimensions.]
»»»» ColumnOutput ColumnOutput false none A simplified column schema, without ID or dimensions.
»»»»» name string true none none
»»»»» type ColumnType true none Base type for all Column Types
»»»»» attributes [AttributeOutput] true none [Column attribute output.]
»»»»»» AttributeOutput AttributeOutput false none Column attribute output.
»»»»»»» attribute_type AttributeTypeName true none Attribute type name.
»»»»»»»» namespace string true none none
»»»»»»»» name string true none none
»»»»» dimension NodeNameOutput false none Node name only
»»»»»» name string true none none
»»» updated_at string(date-time) true none none
»»» materialization_configs [MaterializationConfigOutput] true none [Output for materialization config.]
»»»» MaterializationConfigOutput MaterializationConfigOutput false none Output for materialization config.
»»»»» engine EngineInfo true none Class for engine creation
»»»»»» name string true none none
»»»»»» version string true none none
»»»»»» uri string false none none
»»»»» config string true none none
»»» parents [NodeNameOutput] true none [Node name only]
»»»» NodeNameOutput NodeNameOutput false none Node name only
»» created_at string(date-time) true none none
»» tags [Tag] false none [A tag.]
»»» Tag Tag false none A tag.
»»»» description string true none none
»»»» tag_metadata object false none none
»»»» name string true none none
»»»» display_name string false none none
»»»» tag_type string true none none
»»»» id integer false none none

Enumerated Values #

Property Value
type source
type transform
type metric
type dimension
type cube
status valid
status invalid
mode published
mode draft

Add An Availability State #

POST /data/{node_name}/availability/

Add an availability state to a node

Body parameter

{
  "catalog": "string",
  "schema_": "string",
  "table": "string",
  "valid_through_ts": 0,
  "max_partition": [
    "string"
  ],
  "min_partition": [
    "string"
  ]
}

Parameters

Name In Type Required Description
node_name path string true none
body body AvailabilityStateBase true none

Example responses

200 Response

null

Responses

Status Meaning Description Schema
200 OK Successful Response Inline
422 Unprocessable Entity Validation Error HTTPValidationError

Response Schema

Get Data #

GET /data/{node_name}/

Gets data for a node

Parameters

Name In Type Required Description
node_name path string true none
dimensions query array[string] false none
filters query array[string] false none
async_ query boolean false none

Example responses

200 Response

null

Responses

Status Meaning Description Schema
200 OK Successful Response Inline
422 Unprocessable Entity Validation Error HTTPValidationError

Response Schema

Health Check #

GET /health/

Healthcheck for services.

Example responses

200 Response

[
  {
    "name": "string",
    "status": "ok"
  }
]

Responses

Status Meaning Description Schema
200 OK Successful Response Inline

Response Schema

Status Code 200

Response Health Check Health Get

Name Type Required Restrictions Description
Response Health Check Health Get [HealthCheck] false none [A healthcheck response.]
» HealthCheck HealthCheck false none A healthcheck response.
»» name string true none none
»» status HealthcheckStatus true none Possible health statuses.

Enumerated Values #

Property Value
status ok
status failed

Get A Cube #

GET /cubes/{name}/

Get information on a cube

Parameters

Name In Type Required Description
name path string true none

Example responses

200 Response

{
  "node_revision_id": 0,
  "node_id": 0,
  "type": "source",
  "name": "string",
  "display_name": "string",
  "version": "string",
  "description": "",
  "availability": {
    "catalog": "string",
    "schema_": "string",
    "table": "string",
    "valid_through_ts": 0,
    "max_partition": [
      "string"
    ],
    "min_partition": [
      "string"
    ],
    "id": 0,
    "updated_at": "2019-08-24T14:15:22Z"
  },
  "cube_elements": [
    {
      "id": 0,
      "current_version": "string",
      "name": "string"
    }
  ],
  "updated_at": "2019-08-24T14:15:22Z"
}

Responses

Status Meaning Description Schema
200 OK Successful Response CubeRevisionMetadata
422 Unprocessable Entity Validation Error HTTPValidationError

List Tags #

GET /tags/

List all available tags.

Parameters

Name In Type Required Description
tag_type query string false none

Example responses

200 Response

[
  {
    "description": "string",
    "tag_metadata": {},
    "name": "string",
    "display_name": "string",
    "tag_type": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK Successful Response Inline
422 Unprocessable Entity Validation Error HTTPValidationError

Response Schema

Status Code 200

Response List Tags Tags Get

Name Type Required Restrictions Description
Response List Tags Tags Get [TagOutput] false none [Output tag model.]
» TagOutput TagOutput false none Output tag model.
»» description string true none none
»» tag_metadata object false none none
»» name string true none none
»» display_name string false none none
»» tag_type string true none none

Create A Tag #

POST /tags/

Create a tag.

Body parameter

{
  "description": "string",
  "tag_metadata": {},
  "name": "string",
  "display_name": "string",
  "tag_type": "string"
}

Parameters

Name In Type Required Description
body body CreateTag true none

Example responses

201 Response

{
  "description": "string",
  "tag_metadata": {},
  "name": "string",
  "display_name": "string",
  "tag_type": "string",
  "id": 0
}

Responses

Status Meaning Description Schema
201 Created Successful Response Tag
422 Unprocessable Entity Validation Error HTTPValidationError

Get A Tag #

GET /tags/{name}/

Return a tag by name.

Parameters

Name In Type Required Description
name path string true none

Example responses

200 Response

{
  "description": "string",
  "tag_metadata": {},
  "name": "string",
  "display_name": "string",
  "tag_type": "string",
  "id": 0
}

Responses

Status Meaning Description Schema
200 OK Successful Response Tag
422 Unprocessable Entity Validation Error HTTPValidationError

Update A Tag #

PATCH /tags/{name}/

Update a tag.

Body parameter

{
  "description": "string",
  "tag_metadata": {}
}

Parameters

Name In Type Required Description
name path string true none
body body UpdateTag true none

Example responses

200 Response

{
  "description": "string",
  "tag_metadata": {},
  "name": "string",
  "display_name": "string",
  "tag_type": "string",
  "id": 0
}

Responses

Status Meaning Description Schema
200 OK Successful Response Tag
422 Unprocessable Entity Validation Error HTTPValidationError

List Nodes For A Tag #

GET /tags/{name}/nodes/

Find nodes tagged with the tag, filterable by node type.

Parameters

Name In Type Required Description
name path string true none
node_type query NodeType false none

Enumerated Values #

Parameter Value
node_type source
node_type transform
node_type metric
node_type dimension
node_type cube

Example responses

200 Response

[
  "string"
]

Responses

Status Meaning Description Schema
200 OK Successful Response Inline
422 Unprocessable Entity Validation Error HTTPValidationError

Response Schema

Status Code 200

Response List Nodes For A Tag Tags Name Nodes Get

Name Type Required Restrictions Description
Response List Nodes For A Tag Tags Name Nodes Get [string] false none none

List Attributes #

GET /attributes/

List all available attribute types.

Example responses

200 Response

[
  {
    "uniqueness_scope": [],
    "namespace": "string",
    "name": "string",
    "description": "string",
    "allowed_node_types": [
      "source"
    ],
    "id": 0
  }
]

Responses

Status Meaning Description Schema
200 OK Successful Response Inline

Response Schema

Status Code 200

Response List Attributes Attributes Get

Name Type Required Restrictions Description
Response List Attributes Attributes Get [AttributeType] false none [Available attribute types for column metadata.]
» AttributeType AttributeType false none Available attribute types for column metadata.
»» uniqueness_scope [UniquenessScope] false none [The scope at which this attribute needs to be unique.]
»»» UniquenessScope UniquenessScope false none The scope at which this attribute needs to be unique.
»» namespace string true none none
»» name string true none none
»» description string true none none
»» allowed_node_types [NodeType] true none [Node type.

A node can have 4 types, currently:

1. SOURCE nodes are root nodes in the DAG, and point to tables or views in a DB.
2. TRANSFORM nodes are SQL transformations, reading from SOURCE/TRANSFORM nodes.
3. METRIC nodes are leaves in the DAG, and have a single aggregation query.
4. DIMENSION nodes are special SOURCE nodes that can be auto-joined with METRICS.
5. CUBE nodes contain a reference to a set of METRICS and a set of DIMENSIONS.]
»»» NodeType NodeType false none Node type.

A node can have 4 types, currently:

1. SOURCE nodes are root nodes in the DAG, and point to tables or views in a DB.
2. TRANSFORM nodes are SQL transformations, reading from SOURCE/TRANSFORM nodes.
3. METRIC nodes are leaves in the DAG, and have a single aggregation query.
4. DIMENSION nodes are special SOURCE nodes that can be auto-joined with METRICS.
5. CUBE nodes contain a reference to a set of METRICS and a set of DIMENSIONS.
»» id integer false none none

Enumerated Values #

Property Value
UniquenessScope node
UniquenessScope column_type
NodeType source
NodeType transform
NodeType metric
NodeType dimension
NodeType cube

Add An Attribute Type #

POST /attributes/

Add a new attribute type

Body parameter

{
  "namespace": "string",
  "name": "string",
  "description": "string",
  "allowed_node_types": [
    "source"
  ]
}

Parameters

Name In Type Required Description
body body MutableAttributeTypeFields true none

Example responses

201 Response

{
  "uniqueness_scope": [],
  "namespace": "string",
  "name": "string",
  "description": "string",
  "allowed_node_types": [
    "source"
  ],
  "id": 0
}

Responses

Status Meaning Description Schema
201 Created Successful Response AttributeType
422 Unprocessable Entity Validation Error HTTPValidationError

Get Sql #

GET /sql/{node_name}/

Return SQL for a node.

Parameters

Name In Type Required Description
node_name path string true none
dimensions query array[string] false none
filters query array[string] false none

Example responses

200 Response

{
  "sql": "string",
  "columns": [
    {
      "name": "string",
      "type": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Successful Response TranslatedSQL
422 Unprocessable Entity Validation Error HTTPValidationError

Schemas #

AttributeOutput

{
  "attribute_type": {
    "namespace": "string",
    "name": "string"
  }
}

AttributeOutput

Properties #

Name Type Required Restrictions Description
attribute_type AttributeTypeName true none Attribute type name.

AttributeType

{
  "uniqueness_scope": [],
  "namespace": "string",
  "name": "string",
  "description": "string",
  "allowed_node_types": [
    "source"
  ],
  "id": 0
}

AttributeType

Properties #

Name Type Required Restrictions Description
uniqueness_scope [UniquenessScope] false none [The scope at which this attribute needs to be unique.]
namespace string true none none
name string true none none
description string true none none
allowed_node_types [NodeType] true none [Node type.

A node can have 4 types, currently:

1. SOURCE nodes are root nodes in the DAG, and point to tables or views in a DB.
2. TRANSFORM nodes are SQL transformations, reading from SOURCE/TRANSFORM nodes.
3. METRIC nodes are leaves in the DAG, and have a single aggregation query.
4. DIMENSION nodes are special SOURCE nodes that can be auto-joined with METRICS.
5. CUBE nodes contain a reference to a set of METRICS and a set of DIMENSIONS.]
id integer false none none

AttributeTypeName

{
  "namespace": "string",
  "name": "string"
}

AttributeTypeName

Properties #

Name Type Required Restrictions Description
namespace string true none none
name string true none none

AvailabilityState

{
  "catalog": "string",
  "schema_": "string",
  "table": "string",
  "valid_through_ts": 0,
  "max_partition": [
    "string"
  ],
  "min_partition": [
    "string"
  ],
  "id": 0,
  "updated_at": "2019-08-24T14:15:22Z"
}

AvailabilityState

Properties #

Name Type Required Restrictions Description
catalog string true none none
schema_ string false none none
table string true none none
valid_through_ts integer true none none
max_partition [string] true none none
min_partition [string] true none none
id integer false none none
updated_at string(date-time) false none none

AvailabilityStateBase

{
  "catalog": "string",
  "schema_": "string",
  "table": "string",
  "valid_through_ts": 0,
  "max_partition": [
    "string"
  ],
  "min_partition": [
    "string"
  ]
}

AvailabilityStateBase

Properties #

Name Type Required Restrictions Description
catalog string true none none
schema_ string false none none
table string true none none
valid_through_ts integer true none none
max_partition [string] true none none
min_partition [string] true none none

Catalog

{
  "id": 0,
  "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
  "name": "string",
  "created_at": "2019-08-24T14:15:22Z",
  "updated_at": "2019-08-24T14:15:22Z",
  "extra_params": {}
}

Catalog

Properties #

Name Type Required Restrictions Description
id integer false none none
uuid string(uuid) false none none
name string true none none
created_at string(date-time) false none none
updated_at string(date-time) false none none
extra_params object false none none

CatalogInfo

{
  "name": "string",
  "engines": []
}

CatalogInfo

Properties #

Name Type Required Restrictions Description
name string true none none
engines [EngineInfo] false none [Class for engine creation]

Column

{
  "id": 0,
  "name": "string",
  "type": {},
  "dimension_id": 0,
  "dimension_column": "string"
}

Column

Properties #

Name Type Required Restrictions Description
id integer false none none
name string true none none
type ColumnType true none Base type for all Column Types
dimension_id integer false none none
dimension_column string false none none

ColumnAttributeInput

{
  "attribute_type_namespace": "system",
  "attribute_type_name": "string",
  "column_name": "string"
}

ColumnAttributeInput

Properties #

Name Type Required Restrictions Description
attribute_type_namespace string false none none
attribute_type_name string true none none
column_name string true none none

ColumnMetadata

{
  "name": "string",
  "type": "string"
}

ColumnMetadata

Properties #

Name Type Required Restrictions Description
name string true none none
type string true none none

ColumnOutput

{
  "name": "string",
  "type": {},
  "attributes": [
    {
      "attribute_type": {
        "namespace": "string",
        "name": "string"
      }
    }
  ],
  "dimension": {
    "name": "string"
  }
}

ColumnOutput

Properties #

Name Type Required Restrictions Description
name string true none none
type ColumnType true none Base type for all Column Types
attributes [AttributeOutput] true none [Column attribute output.]
dimension NodeNameOutput false none Node name only

ColumnType

{}

ColumnType

Properties #

None

CreateCubeNode

{
  "display_name": "string",
  "cube_elements": [
    "string"
  ],
  "description": "string",
  "mode": "published",
  "name": "string"
}

CreateCubeNode

Properties #

Name Type Required Restrictions Description
display_name string false none none
cube_elements [string] true none none
description string true none none
mode NodeMode true none Node mode.

A node can be in one of the following modes:

1. PUBLISHED - Must be valid and not cause any child nodes to be invalid
2. DRAFT - Can be invalid, have invalid parents, and include dangling references
name string true none none

CreateNode

{
  "query": "string",
  "display_name": "string",
  "description": "string",
  "mode": "published",
  "name": "string"
}

CreateNode

Properties #

Name Type Required Restrictions Description
query string true none none
display_name string false none none
description string true none none
mode NodeMode true none Node mode.

A node can be in one of the following modes:

1. PUBLISHED - Must be valid and not cause any child nodes to be invalid
2. DRAFT - Can be invalid, have invalid parents, and include dangling references
name string true none none

CreateSourceNode

{
  "catalog": "string",
  "schema_": "string",
  "table": "string",
  "columns": {
    "property1": {
      "type": {},
      "dimension": "string"
    },
    "property2": {
      "type": {},
      "dimension": "string"
    }
  },
  "display_name": "string",
  "description": "string",
  "mode": "published",
  "name": "string"
}

CreateSourceNode

Properties #

Name Type Required Restrictions Description
catalog string true none none
schema_ string true none none
table string true none none
columns object false none none
» additionalProperties SourceNodeColumnType false none Schema of a column for a table defined in a source node
display_name string false none none
description string true none none
mode NodeMode true none Node mode.

A node can be in one of the following modes:

1. PUBLISHED - Must be valid and not cause any child nodes to be invalid
2. DRAFT - Can be invalid, have invalid parents, and include dangling references
name string true none none

CreateTag

{
  "description": "string",
  "tag_metadata": {},
  "name": "string",
  "display_name": "string",
  "tag_type": "string"
}

CreateTag

Properties #

Name Type Required Restrictions Description
description string true none none
tag_metadata object false none none
name string true none none
display_name string false none none
tag_type string true none none

CubeElementMetadata

{
  "id": 0,
  "current_version": "string",
  "name": "string"
}

CubeElementMetadata

Properties #

Name Type Required Restrictions Description
id integer true none none
current_version string true none none
name string true none none

CubeRevisionMetadata

{
  "node_revision_id": 0,
  "node_id": 0,
  "type": "source",
  "name": "string",
  "display_name": "string",
  "version": "string",
  "description": "",
  "availability": {
    "catalog": "string",
    "schema_": "string",
    "table": "string",
    "valid_through_ts": 0,
    "max_partition": [
      "string"
    ],
    "min_partition": [
      "string"
    ],
    "id": 0,
    "updated_at": "2019-08-24T14:15:22Z"
  },
  "cube_elements": [
    {
      "id": 0,
      "current_version": "string",
      "name": "string"
    }
  ],
  "updated_at": "2019-08-24T14:15:22Z"
}

CubeRevisionMetadata

Properties #

Name Type Required Restrictions Description
node_revision_id integer true none none
node_id integer true none none
type NodeType true none Node type.

A node can have 4 types, currently:

1. SOURCE nodes are root nodes in the DAG, and point to tables or views in a DB.
2. TRANSFORM nodes are SQL transformations, reading from SOURCE/TRANSFORM nodes.
3. METRIC nodes are leaves in the DAG, and have a single aggregation query.
4. DIMENSION nodes are special SOURCE nodes that can be auto-joined with METRICS.
5. CUBE nodes contain a reference to a set of METRICS and a set of DIMENSIONS.
name string true none none
display_name string true none none
version string true none none
description string false none none
availability AvailabilityState false none The availability of materialized data for a node
cube_elements [CubeElementMetadata] true none [Metadata for an element in a cube]
updated_at string(date-time) true none none

EngineInfo

{
  "name": "string",
  "version": "string",
  "uri": "string"
}

EngineInfo

Properties #

Name Type Required Restrictions Description
name string true none none
version string true none none
uri string false none none

HTTPValidationError

{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

HTTPValidationError

Properties #

Name Type Required Restrictions Description
detail [ValidationError] false none none

HealthCheck

{
  "name": "string",
  "status": "ok"
}

HealthCheck

Properties #

Name Type Required Restrictions Description
name string true none none
status HealthcheckStatus true none Possible health statuses.

HealthcheckStatus

"ok"

HealthcheckStatus

Properties #

Name Type Required Restrictions Description
HealthcheckStatus string false none Possible health statuses.

Enumerated Values #

Property Value
HealthcheckStatus ok
HealthcheckStatus failed

MaterializationConfigOutput

{
  "engine": {
    "name": "string",
    "version": "string",
    "uri": "string"
  },
  "config": "string"
}

MaterializationConfigOutput

Properties #

Name Type Required Restrictions Description
engine EngineInfo true none Class for engine creation
config string true none none

Metric

{
  "id": 0,
  "name": "string",
  "display_name": "string",
  "current_version": "string",
  "description": "",
  "created_at": "2019-08-24T14:15:22Z",
  "updated_at": "2019-08-24T14:15:22Z",
  "query": "string",
  "dimensions": [
    "string"
  ]
}

Metric

Properties #

Name Type Required Restrictions Description
id integer true none none
name string true none none
display_name string true none none
current_version string true none none
description string false none none
created_at string(date-time) true none none
updated_at string(date-time) true none none
query string true none none
dimensions [string] true none none

MutableAttributeTypeFields

{
  "namespace": "string",
  "name": "string",
  "description": "string",
  "allowed_node_types": [
    "source"
  ]
}

MutableAttributeTypeFields

Properties #

Name Type Required Restrictions Description
namespace string true none none
name string true none none
description string true none none
allowed_node_types [NodeType] true none [Node type.

A node can have 4 types, currently:

1. SOURCE nodes are root nodes in the DAG, and point to tables or views in a DB.
2. TRANSFORM nodes are SQL transformations, reading from SOURCE/TRANSFORM nodes.
3. METRIC nodes are leaves in the DAG, and have a single aggregation query.
4. DIMENSION nodes are special SOURCE nodes that can be auto-joined with METRICS.
5. CUBE nodes contain a reference to a set of METRICS and a set of DIMENSIONS.]

NodeMode

"published"

NodeMode

Properties #

Name Type Required Restrictions Description
NodeMode string false none Node mode.

A node can be in one of the following modes:

1. PUBLISHED - Must be valid and not cause any child nodes to be invalid
2. DRAFT - Can be invalid, have invalid parents, and include dangling references

Enumerated Values #

Property Value
NodeMode published
NodeMode draft

NodeNameOutput

{
  "name": "string"
}

NodeNameOutput

Properties #

Name Type Required Restrictions Description
name string true none none

NodeOutput

{
  "current": {
    "node_revision_id": 0,
    "node_id": 0,
    "type": "source",
    "name": "string",
    "display_name": "string",
    "version": "string",
    "status": "valid",
    "mode": "published",
    "catalog": {
      "id": 0,
      "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
      "name": "string",
      "created_at": "2019-08-24T14:15:22Z",
      "updated_at": "2019-08-24T14:15:22Z",
      "extra_params": {}
    },
    "schema_": "string",
    "table": "string",
    "description": "",
    "query": "string",
    "availability": {
      "catalog": "string",
      "schema_": "string",
      "table": "string",
      "valid_through_ts": 0,
      "max_partition": [
        "string"
      ],
      "min_partition": [
        "string"
      ],
      "id": 0,
      "updated_at": "2019-08-24T14:15:22Z"
    },
    "columns": [
      {
        "name": "string",
        "type": {},
        "attributes": [
          {
            "attribute_type": {
              "namespace": "string",
              "name": "string"
            }
          }
        ],
        "dimension": {
          "name": "string"
        }
      }
    ],
    "updated_at": "2019-08-24T14:15:22Z",
    "materialization_configs": [
      {
        "engine": {
          "name": "string",
          "version": "string",
          "uri": "string"
        },
        "config": "string"
      }
    ],
    "parents": [
      {
        "name": "string"
      }
    ]
  },
  "created_at": "2019-08-24T14:15:22Z",
  "tags": []
}

NodeOutput

Properties #

Name Type Required Restrictions Description
current NodeRevisionOutput true none Output for a node revision with information about columns and if it is a metric.
created_at string(date-time) true none none
tags [Tag] false none [A tag.]

NodeRevision

{
  "name": "string",
  "display_name": "string",
  "type": "source",
  "description": "",
  "query": "string",
  "mode": "published",
  "id": 0,
  "version": "v0.1",
  "node_id": 0,
  "catalog_id": 0,
  "schema_": "string",
  "table": "string",
  "status": "invalid",
  "updated_at": "2019-08-24T14:15:22Z"
}

NodeRevision

Properties #

Name Type Required Restrictions Description
name string true none none
display_name string false none none
type NodeType true none Node type.

A node can have 4 types, currently:

1. SOURCE nodes are root nodes in the DAG, and point to tables or views in a DB.
2. TRANSFORM nodes are SQL transformations, reading from SOURCE/TRANSFORM nodes.
3. METRIC nodes are leaves in the DAG, and have a single aggregation query.
4. DIMENSION nodes are special SOURCE nodes that can be auto-joined with METRICS.
5. CUBE nodes contain a reference to a set of METRICS and a set of DIMENSIONS.
description string false none none
query string false none none
mode NodeMode false none Node mode.

A node can be in one of the following modes:

1. PUBLISHED - Must be valid and not cause any child nodes to be invalid
2. DRAFT - Can be invalid, have invalid parents, and include dangling references
id integer false none none
version string false none none
node_id integer false none none
catalog_id integer false none none
schema_ string false none none
table string false none none
status NodeStatus false none Node status.

A node can have one of the following statuses:

1. VALID - All references to other nodes and node columns are valid
2. INVALID - One or more parent nodes are incompatible or do not exist
updated_at string(date-time) false none none

NodeRevisionBase

{
  "name": "string",
  "display_name": "string",
  "type": "source",
  "description": "",
  "query": "string",
  "mode": "published"
}

NodeRevisionBase

Properties #

Name Type Required Restrictions Description
name string true none none
display_name string false none none
type NodeType true none Node type.

A node can have 4 types, currently:

1. SOURCE nodes are root nodes in the DAG, and point to tables or views in a DB.
2. TRANSFORM nodes are SQL transformations, reading from SOURCE/TRANSFORM nodes.
3. METRIC nodes are leaves in the DAG, and have a single aggregation query.
4. DIMENSION nodes are special SOURCE nodes that can be auto-joined with METRICS.
5. CUBE nodes contain a reference to a set of METRICS and a set of DIMENSIONS.
description string false none none
query string false none none
mode NodeMode false none Node mode.

A node can be in one of the following modes:

1. PUBLISHED - Must be valid and not cause any child nodes to be invalid
2. DRAFT - Can be invalid, have invalid parents, and include dangling references

NodeRevisionOutput

{
  "node_revision_id": 0,
  "node_id": 0,
  "type": "source",
  "name": "string",
  "display_name": "string",
  "version": "string",
  "status": "valid",
  "mode": "published",
  "catalog": {
    "id": 0,
    "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
    "name": "string",
    "created_at": "2019-08-24T14:15:22Z",
    "updated_at": "2019-08-24T14:15:22Z",
    "extra_params": {}
  },
  "schema_": "string",
  "table": "string",
  "description": "",
  "query": "string",
  "availability": {
    "catalog": "string",
    "schema_": "string",
    "table": "string",
    "valid_through_ts": 0,
    "max_partition": [
      "string"
    ],
    "min_partition": [
      "string"
    ],
    "id": 0,
    "updated_at": "2019-08-24T14:15:22Z"
  },
  "columns": [
    {
      "name": "string",
      "type": {},
      "attributes": [
        {
          "attribute_type": {
            "namespace": "string",
            "name": "string"
          }
        }
      ],
      "dimension": {
        "name": "string"
      }
    }
  ],
  "updated_at": "2019-08-24T14:15:22Z",
  "materialization_configs": [
    {
      "engine": {
        "name": "string",
        "version": "string",
        "uri": "string"
      },
      "config": "string"
    }
  ],
  "parents": [
    {
      "name": "string"
    }
  ]
}

NodeRevisionOutput

Properties #

Name Type Required Restrictions Description
node_revision_id integer true none none
node_id integer true none none
type NodeType true none Node type.

A node can have 4 types, currently:

1. SOURCE nodes are root nodes in the DAG, and point to tables or views in a DB.
2. TRANSFORM nodes are SQL transformations, reading from SOURCE/TRANSFORM nodes.
3. METRIC nodes are leaves in the DAG, and have a single aggregation query.
4. DIMENSION nodes are special SOURCE nodes that can be auto-joined with METRICS.
5. CUBE nodes contain a reference to a set of METRICS and a set of DIMENSIONS.
name string true none none
display_name string true none none
version string true none none
status NodeStatus true none Node status.

A node can have one of the following statuses:

1. VALID - All references to other nodes and node columns are valid
2. INVALID - One or more parent nodes are incompatible or do not exist
mode NodeMode true none Node mode.

A node can be in one of the following modes:

1. PUBLISHED - Must be valid and not cause any child nodes to be invalid
2. DRAFT - Can be invalid, have invalid parents, and include dangling references
catalog Catalog false none A catalog.
schema_ string false none none
table string false none none
description string false none none
query string false none none
availability AvailabilityState false none The availability of materialized data for a node
columns [ColumnOutput] true none [A simplified column schema, without ID or dimensions.]
updated_at string(date-time) true none none
materialization_configs [MaterializationConfigOutput] true none [Output for materialization config.]
parents [NodeNameOutput] true none [Node name only]

NodeStatus

"valid"

NodeStatus

Properties #

Name Type Required Restrictions Description
NodeStatus string false none Node status.

A node can have one of the following statuses:

1. VALID - All references to other nodes and node columns are valid
2. INVALID - One or more parent nodes are incompatible or do not exist

Enumerated Values #

Property Value
NodeStatus valid
NodeStatus invalid

NodeType

"source"

NodeType

Properties #

Name Type Required Restrictions Description
NodeType string false none Node type.

A node can have 4 types, currently:

1. SOURCE nodes are root nodes in the DAG, and point to tables or views in a DB.
2. TRANSFORM nodes are SQL transformations, reading from SOURCE/TRANSFORM nodes.
3. METRIC nodes are leaves in the DAG, and have a single aggregation query.
4. DIMENSION nodes are special SOURCE nodes that can be auto-joined with METRICS.
5. CUBE nodes contain a reference to a set of METRICS and a set of DIMENSIONS.

Enumerated Values #

Property Value
NodeType source
NodeType transform
NodeType metric
NodeType dimension
NodeType cube

NodeValidation

{
  "message": "string",
  "status": "valid",
  "node_revision": {
    "name": "string",
    "display_name": "string",
    "type": "source",
    "description": "",
    "query": "string",
    "mode": "published",
    "id": 0,
    "version": "v0.1",
    "node_id": 0,
    "catalog_id": 0,
    "schema_": "string",
    "table": "string",
    "status": "invalid",
    "updated_at": "2019-08-24T14:15:22Z"
  },
  "dependencies": [
    {
      "node_revision_id": 0,
      "node_id": 0,
      "type": "source",
      "name": "string",
      "display_name": "string",
      "version": "string",
      "status": "valid",
      "mode": "published",
      "catalog": {
        "id": 0,
        "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
        "name": "string",
        "created_at": "2019-08-24T14:15:22Z",
        "updated_at": "2019-08-24T14:15:22Z",
        "extra_params": {}
      },
      "schema_": "string",
      "table": "string",
      "description": "",
      "query": "string",
      "availability": {
        "catalog": "string",
        "schema_": "string",
        "table": "string",
        "valid_through_ts": 0,
        "max_partition": [
          "string"
        ],
        "min_partition": [
          "string"
        ],
        "id": 0,
        "updated_at": "2019-08-24T14:15:22Z"
      },
      "columns": [
        {
          "name": "string",
          "type": {},
          "attributes": [
            {
              "attribute_type": {
                "namespace": "string",
                "name": "string"
              }
            }
          ],
          "dimension": {
            "name": "string"
          }
        }
      ],
      "updated_at": "2019-08-24T14:15:22Z",
      "materialization_configs": [
        {
          "engine": {
            "name": "string",
            "version": "string",
            "uri": "string"
          },
          "config": "string"
        }
      ],
      "parents": [
        {
          "name": "string"
        }
      ]
    }
  ],
  "columns": [
    {
      "id": 0,
      "name": "string",
      "type": {},
      "dimension_id": 0,
      "dimension_column": "string"
    }
  ]
}

NodeValidation

Properties #

Name Type Required Restrictions Description
message string true none none
status NodeStatus true none Node status.

A node can have one of the following statuses:

1. VALID - All references to other nodes and node columns are valid
2. INVALID - One or more parent nodes are incompatible or do not exist
node_revision NodeRevision true none A node revision.
dependencies [NodeRevisionOutput] true none [Output for a node revision with information about columns and if it is a metric.]
columns [Column] true none [A column.

Columns can be physical (associated with Table objects) or abstract (associated
with Node objects).]

SourceNodeColumnType

{
  "type": {},
  "dimension": "string"
}

SourceNodeColumnType

Properties #

Name Type Required Restrictions Description
type ColumnType true none Base type for all Column Types
dimension string false none none

Tag

{
  "description": "string",
  "tag_metadata": {},
  "name": "string",
  "display_name": "string",
  "tag_type": "string",
  "id": 0
}

Tag

Properties #

Name Type Required Restrictions Description
description string true none none
tag_metadata object false none none
name string true none none
display_name string false none none
tag_type string true none none
id integer false none none

TagOutput

{
  "description": "string",
  "tag_metadata": {},
  "name": "string",
  "display_name": "string",
  "tag_type": "string"
}

TagOutput

Properties #

Name Type Required Restrictions Description
description string true none none
tag_metadata object false none none
name string true none none
display_name string false none none
tag_type string true none none

TranslatedSQL

{
  "sql": "string",
  "columns": [
    {
      "name": "string",
      "type": "string"
    }
  ]
}

TranslatedSQL

Properties #

Name Type Required Restrictions Description
sql string true none none
columns [ColumnMetadata] false none [A simple model for column metadata.]

UniquenessScope

"node"

UniquenessScope

Properties #

Name Type Required Restrictions Description
UniquenessScope string false none The scope at which this attribute needs to be unique.

Enumerated Values #

Property Value
UniquenessScope node
UniquenessScope column_type

UpdateNode

{
  "catalog": "string",
  "schema_": "string",
  "table": "string",
  "columns": {
    "property1": {
      "type": {},
      "dimension": "string"
    },
    "property2": {
      "type": {},
      "dimension": "string"
    }
  },
  "display_name": "string",
  "description": "string",
  "mode": "published",
  "query": "string"
}

UpdateNode

Properties #

Name Type Required Restrictions Description
catalog string false none none
schema_ string false none none
table string false none none
columns object false none none
» additionalProperties SourceNodeColumnType false none Schema of a column for a table defined in a source node
display_name string false none none
description string false none none
mode NodeMode false none Node mode.

A node can be in one of the following modes:

1. PUBLISHED - Must be valid and not cause any child nodes to be invalid
2. DRAFT - Can be invalid, have invalid parents, and include dangling references
query string false none none

UpdateTag

{
  "description": "string",
  "tag_metadata": {}
}

UpdateTag

Properties #

Name Type Required Restrictions Description
description string false none none
tag_metadata object false none none

UpsertMaterializationConfig

{
  "engine_name": "string",
  "engine_version": "string",
  "config": "string"
}

UpsertMaterializationConfig

Properties #

Name Type Required Restrictions Description
engine_name string true none none
engine_version string true none none
config string true none none

ValidationError

{
  "loc": [
    "string"
  ],
  "msg": "string",
  "type": "string"
}

ValidationError

Properties #

Name Type Required Restrictions Description
loc [string] true none none
msg string true none none
type string true none none