Workspace Declarative API Interface
Declarative API
Check high-level overview of the Declarative API Interface first.
Manage workspace metadata
There are endpoints to manipulate the model:
/api/layout/workspaces
to set all workspaces in organization at once (logical + physical + analytics layer)/api/layout/workspaceDataFilters
to set all workspace data filters in organization at once/api/layout/workspaces/<workspace-id>
to set whole model at once (logical + physical + analytics layer)/api/layout/workspaces/<workspace-id>/logicalModel
to set logical + physical layer of the model/api/layout/workspaces/<workspace-id>/analyticsModel
to set analytics layer of the model
Whenever you put a new model, the previous version is fully replaced. When putting logical model only, then relations from analytical objects to no longer existing logical objects will be deleted too, so the influenced analytics objects might become invalid, ex. metrics are not computable, insights cannot be visualized. These relations cannot be fixed by putting back the previous version of the model, they must be restored manually or whole model must be restored.
Document for the complete model endpoint can be used on logical or analytics endpoint eventually and then relevant part will be processed only.
To see the entire API specification, visit API reference
.
Write operations warning
The user must be careful when write new declarative model through API. Immediately before write new values ALL previous values are deleted. It is user business to back up all data before write operation.
Examples
First, be aware of your application endpoint. For Helm Chart deployment, it represents the
https://<organization-hostname>
value. For All-in-One docker image, the default endpoint is http://localhost:3000
.
In the following examples:
- the endpoint is substituted by
$ENDPOINT
variable; - the workspace identifier (name) used here is
my-space
.
Backup single workspace
curl -H "Authorization: Bearer YWRtaW46Ym9vdHN0cmFwOmFkbWluMTIz" \
-H "Content-Type: application/json" \
-X GET \
$ENDPOINT/api/layout/workspaces/my-space > workspace-backup.json
Restore single workspace
curl -H "Authorization: Bearer YWRtaW46Ym9vdHN0cmFwOmFkbWluMTIz" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-X PUT \
-d @workspace-backup.json \
$ENDPOINT/api/layout/workspaces/my-space
Clone workspace
Combination of two previous examples.
GET logical model
curl -H "Authorization: Bearer YWRtaW46Ym9vdHN0cmFwOmFkbWluMTIz" $ENDPOINT/api/layout/workspaces/my-space/logicalModel > model.json
PUT logical model
curl -H "Authorization: Bearer YWRtaW46Ym9vdHN0cmFwOmFkbWluMTIz" \
-H "Content-Type: application/json" \
-X PUT \
-d @model.json $ENDPOINT/api/layout/workspaces/my-space/logicalModel
Clean model using an empty boilerplate
curl -H "Authorization: Bearer YWRtaW46Ym9vdHN0cmFwOmFkbWluMTIz" \
-H "Content-Type: application/json" \
-X PUT \
-d '{
"ldm": { "datasets": [], "dateInstances": [] },
"analytics": { "analyticalDashboards": [], "filterContexts": [], "metrics": [], "visualizationObjects": [] }
}' \
$ENDPOINT/api/layout/workspaces/my-space
Backup all workspaces
curl -H "Authorization: Bearer YWRtaW46Ym9vdHN0cmFwOmFkbWluMTIz" \
-H "Content-Type: application/json" \
-X GET \
$ENDPOINT/api/layout/workspaces > all-workspaces-backup.json
Restore all workspaces
curl -H "Authorization: Bearer YWRtaW46Ym9vdHN0cmFwOmFkbWluMTIz" \
-H "Content-Type: application/json" \
-X PUT \
-d @all-workspaces-backup.json \
$ENDPOINT/api/layout/workspaces
Workspace layout document
{
"workspaces": [
{
"id": "headquarters",
"name": "Headquarters",
"model": {
"ldm": {
"datasets": [],
"dateInstances": [{
"description": "parent date",
"granularities": [
"DAY",
"WEEK",
"MONTH",
"QUARTER",
"YEAR"
],
"granularitiesFormatting": {
"titleBase": "",
"titlePattern": "%granularityTitle (%titleBase)"
},
"id": "date.parent",
"title": "Hierarchy Date"
}]
},
"analytics": {
"analyticalDashboards": [],
"filterContexts": [],
"metrics": [],
"visualizationObjects": []
}
}
},
{
"id": "sub1",
"name": "Subsidiary I.",
"model": {
"ldm": {
"datasets": [],
"dateInstances": []
},
"analytics": {
"analyticalDashboards": [],
"filterContexts": [],
"metrics": [],
"visualizationObjects": []
}
},
"parent": {
"id": "headquarters",
"type": "workspace"
}
}
],
"workspaceDataFilters": []
}