HomeGuidesRecipesAPI Reference
Alation Help Center

Get Schemas

Get Schemas in a Data Source

Description

This API can be used to get a list of schemas in a data source in JSON format.

NameDescription
custom_fieldsCustom fields like Stewards etc.
titleFriendly title of schema.
descriptionHTML description of the schema.
idUnique numeric schema identifier.
urlRelative URL path to the Alation schema catalog page.
ds_idUnique numeric identifier of the data source.
nameFully qualified name of the schema in the database. For Redshift, SQL-Server, Vertica, Postgres schema name constructed as CATALOG.SCHEMA.

NOTE: This API is available from version 3.4 and later.

URL

GET /catalog/datasource/**<datasource_id>**/schema/?**<params>**

Replace <params> with your list of parameters. Multiple parameters can be combined as PARAM1&PARAM2.

Replace <datasource_id> with the id of the data source which can be obtained either from the Alation URL for the data source or through Get Data Sources API.

URL Parameters

Parameters can be none, any or all of the following:

NameRequiredDescription
idNoUnique numeric ID of a schema. Used to get metadata for a specific schema. Schema ID can be obtained from Alation URL for the schema.
Example: Get metadata for schema 92 in data source 9 /catalog/datasource/9/schema/?id=92
titleNoGet all schemas with a title. Title value is case sensitive.
Example: Get all schemas titled “Retail Sales” in Data Source 9. /catalog/datasource/9/schema/?title=Retail Sales
nameNoGet all schemas with a specific name in a datasource. name is the name of the schema in the database.
TODO: Note about concatenated schema names for SQL-Server, Redshift.
Example: Get metadata about schema named “retail” in data source 9. /catalog/datasource/9/schema/?name=retail
limitNoLimit the number of schemas returned.
Example: /catalog/datasource/9/schema/?limit=10
skipNoSkip a number of records and return the rest. limit and skip are used for pagination of the results.
Example: /catalog/datasource/9/schema/?skip=10
custom_fieldsNoFilter results based on Custom Field values. The general format for the filter is: /catalog/datasource/<datasource_id>/schema/?custom_fields=[<filter1>,<filter2>]

Example Filter: Get all data sources with Jake Magner as a Steward.
/catalog/datasource/<datasource_id>/schema/?custom_fields=[{"field_name":"Steward", "value":"[email protected]", "value_type":"user"}]

Example Filter: Get all data sources with "Gov Council" (user group) in Stewards.
/catalog/datasource/<datasource_id>/schema/?custom_fields=[{"field_name":"Steward", "value":"Gov Council", "value_type":"groupprofile"}]

Example Filter: Get all data sources with Season (text field) set to Spring.
/catalog/datasource/<datasource_id>/schema/?custom_fields=[{"field_name":"Season", "value":"Spring", "value_type":"text"}]
order_byNoOrder schemas either by title or name.
Example: Order schemas by title and return the first 5 results in data source 9. /catalog/datasource/9/schema/?order_by=title&limit=5

Headers

HTTP HeaderValue
TOKEN<your_token>

Replace <your_token> with API Token which can be obtained from getToken API call (Get API Token).

Success Response

Content-Type: application/json

Status: 200 OK

Body

[
   {
       "custom_fields":
       [
           {
               "value": "[email protected]",
               "value_type": "user",
               "field_name": "Steward"
           }
       ],
       "description": "",
       "ds_id": 9,
       "id": 92,
       "name": "retail",
       "title": "Retail Sales",
       "url": "/schema/92/"
   },
   {
       "custom_fields":
       [
           {
               "value": "[email protected]",
               "value_type": "user",
               "field_name": "Steward"
           },
           {
               "value": "[email protected]",
               "value_type": "user",
               "field_name": "Steward"
           }
       ],
       "description": "",
       "ds_id": 9,
       "id": 85,
       "name": "chandra_db",
       "title": "Retail Sales",
       "url": "/schema/85/"
   }
]

Error Response

Invalid Token

Status: 403 Forbidden

Body

{
   "detail": "Authentication failed"
}

Missing Token Header

Status: 403 Forbidden

Body

{
   "detail": "Authentication credentials were not provided."
}

Code Samples

cURL

#!/bin/bash

#This is an example token. Please replace this with your token.
TOKEN="3b3bf108-e631-4a26-96ba-942a68182b67"

DATASOURCE_ID=9

BASE_URL="http://test-production.alationdata.com/catalog/datasource/${DATASOURCE_ID}/schema/"

# List all the schemas in data source ID 9
curl -H "TOKEN: ${TOKEN}" "$BASE_URL"

# Get schema with ID 92 in data source ID 9
curl -H "TOKEN: ${TOKEN}" "${BASE_URL}?id=92"

# Get all schemas titled Retail Sales
curl -H "TOKEN: ${TOKEN}" "${BASE_URL}?title=Retail Sales"

# Order schemas by name, skip the first 2 and return the next 3
curl -H "TOKEN: ${TOKEN}" "${BASE_URL}?order_by=name&skip=2&limit=3"

Python

import requests
import json

#This is an example token. Please replace this with your token.
headers = {'Token': '3b3bf108-e631-4a26-96ba-942a68182b67'}

datasource_id = 9

# Get the first 10 schemas (ordered by name) from data source 9
url = 'http://test-production.alationdata.com/catalog/datasource/%s/schema/?order_by=name&limit=10' % datasource_id

req = requests.get(url, headers=headers)
schemas = json.loads(req.text)
for schema in schemas:
    print "ID: %d, Name: %s" % (schema['id'], schema['name'])