API Guides

API Guides

Get Access Token

The access token is used in the request header Authorization: Bearer <COPY ACCESS CODE HERE>

# REPLACE: <USER>, <PASSWORD> curl -X POST -u "know-app:" \ -d "grant_type=password&username=<USER>&password=<PASSWORD>&scope=openid profile email" \ https://<domain>/keycloak/auth/realms/kada/protocol/openid-connect/token # Response. The access_token will be used to authenticate API calls to KADA. { "access_token": "..", "expires_in": 7200, "refresh_expires_in": 86400, "refresh_token": "...", "token_type": "bearer", "id_token": "...", "not-before-policy": 0, "session_state": "...", "scope": "openid profile email" } export ACCESS_TOKEN=<ACCESS TOKEN FROM RESPONSE>

Get an object

Get the table with name ‘customer’

curl --location \ --request GET 'https://<domain>/api/tables?name=customer' \ --header "Authorization: Bearer ${ACCESS_TOKEN}"

Get fully qualified table name: table123, in schema3 in db2 in host1.

curl --location \ --request GET 'https://<domain>/api/tables?signature=host1.db2.schema3.table123' \ --header "Authorization: Bearer ${ACCESS_TOKEN}"

Updating a description

<TABLE ID> can be found from the Get object call.

curl --location --request PUT 'https://<domain>/api/tables/<TABLE ID>' \ --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data-raw '{ "description": "Add your description here", "replace_date": null }'

Adding a tag to a table

Create a tag

curl --location --request POST 'https://<domain>/api/tags' \ --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data-raw '{ "description": "Add your tag description here", "name": "tag_name" }'

Link the tag to an object.

<TABLE ID> is returned from the Get object call

<TAG ID> is returned from the Get Tags or Create tag call

curl --location \ --request PUT 'https://<domain>/api/tables/<TABLE_ID>/related?object_id=<TAG_ID>&relationship=TAGGED_BY' \ --header "Authorization: Bearer ${ACCESS_TOKEN}"

Delete a tag from an object

curl --location \ --request DELETE 'https://<domain>/api/tables/<TABLE_ID>/related?object_id=<TAG_ID>&relationship=TAGGED_BY' \ --header "Authorization: Bearer ${ACCESS_TOKEN}"

 

Adding a property to a object

A property name is unique for a given object

<OBJECT ID> can be found from the Get object APIs.

curl --location \ --request PUT 'https://<domain>/api/additionalproperties/<OBJECT ID>' \ --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data-raw '[ { "operation": "ADD_OR_UPDATE", "name": "new property 123", "type": "STRING", "value": "PASS", "description": "Add a property description here" }, { "operation": "CLEAR", "name": "existing property", "type": "STRING", "value": "", "description": "" } ]'

Get a collection template

Get the Classification collection.

curl --location \ --request GET 'https://domain/api/collections?name=Classification' \ --header "Authorization: Bearer ${ACCESS_TOKEN}"

Response - note the properties which will be used to create collection instances.

{ "id": "e1fd2337-1b0e-3841-8d60-7c85daa1707e", "id_seq": 2, ... "properties": [ { "allowed_values": [], "data_type": "TEXT_FIELD", "description": "Add a name for the instance", "id": "1", "name": "name", "required": true }, { "allowed_values": [], "data_type": "TEXT_BOX", "description": "Add a description for the instance", "id": "2", "name": "description", "required": false }, { "allowed_values": [], "data_type": "USER_LOOKUP_FILTERED", "description": "Add an owner for the instance", "filter": "16e05af2-13fa-301d-b7fa-69d48bc71d7d", "id": "-1", "name": "data owner", "required": false }, { "allowed_values": [], "data_type": "USER_LOOKUP_FILTERED_MULTI", "description": "Add steward(s) for the instance", "filter": "d13d6b10-a535-3718-854d-459f086ad057", "id": "-2", "name": "data steward", "required": false } ] ... "score": 5.0, "short_name": "classification", "signature": "platform/classification", "source_id": 1000, "updated_at": "2021-10-14T16:02:13.139799+00:00" }

Creating a collection instance

First create a collection and define the template in KADA via the Admin portal.

Use the properties field from the Get collection template to map the properties values to the property id.

<COLLECTION ID> Use Get collection template to find the collection id

First create the collection instance

curl --location --request POST 'https://<domain>/api/collectioninstances' \ --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data-raw '{ "collection_id": "<COLLECTION ID>", "description": "Open information", "name": "Public", "properties": { "1": "Public", "2": "Open information", "-1": "", "-2": [] } }'

Linking the collection instance to a table.

<TABLE ID> the table being linked to the collection

<COLLECTION INSTANCE ID> the collection instance being linked.

curl --location \ --request PUT 'https://<domain>/api/tables/<TABLE ID>/related?object_id=<COLLECTION INSTANCE ID>&relationship=MEMBER_OF' \ --header "Authorization: Bearer ${ACCESS_TOKEN}"

Adding and Steward to a table

Similarly to add an owner use the relationship relationship=OWNED_BY

curl --location \ --request PUT 'https://<domain>/api/tables/<TABLE ID>/related?object_id=<user-id>&relationship=STEWARDED_BY' \ --header "Authorization: Bearer ${ACCESS_TOKEN}"

Creating manual lineage to an upstream table

<TABLE ID> this is the downstream table. Use Get to find the table id.

<UPSTREAM TABLE ID> this is the source table. Use Get to find the table id

curl --location \ --request PUT 'https://<domain>/api/tables/<TABLE ID>/related?object_id=<UPSTREAM TABLE ID>&relationship=SOURCE_FROM' \ --header "Authorization: Bearer ${ACCESS_TOKEN}"