Provisioning Coordinator API
Read this page in wide view mode from here
Provisioning Coordinator API (2.2.0)
The Provisioning Coordinator is the module responsible for coordinating all the provisioning tasks of resources within Witboost.
It interacts with Tech Adapters to deploy and undeploy resources to the underlying infrastructure.
The Provisioning Coordinator API is used to validate and execute provisioning plans, as well as to retrieve the status of a provisioning operation. It is also the central point for updating Access Control Lists on the infrastructure, always by interacting with Tech Adapters.
Validate a deployment request
Request Body schema: application/jsonrequired
A deployment request descriptor wrapped as a string into a simple object
| descriptor required | string |
Responses
Request samples
- Payload
{- "descriptor": "string"
}Response samples
- 202
- 400
- 500
"string"Validate a deployment request
path Parameters
| token required | string token that identifies the request |
Responses
Response samples
- 200
- 400
- 500
{- "status": "RUNNING",
- "validationSummaryStatus": {
- "results": [
- {
- "validationPhaseKind": "INTERNAL_VALIDATION_PHASE",
- "validatedDescriptor": "string",
- "errors": {
- "errors": [
- "string"
], - "code": "string",
- "userMessage": "string",
- "input": "string",
- "inputErrorField": "string",
- "moreInfo": {
- "problems": [
- "string"
], - "solutions": [
- "string"
]
}
}, - "status": "RUNNING"
}
]
}
}Retrieve the provisioning status of a deployment unit in a given environment
path Parameters
| deployment-unit-id required | string Example: my-system:2 |
query Parameters
| environment required | string Example: environment=development |
| include-descriptor required | boolean Default: false Whether the response should include the deployed deployment unit descriptor |
Responses
Response samples
- 200
- 400
- 500
{- "status": "DEPLOYED",
- "provisioningDetails": {
- "descriptorVersion": "2.7.1",
- "descriptor": {
- "id": "my-system:2",
- "name": "my-system",
- "version": "2.7.1",
- "components": [
- {
- "id": "my-component-1",
- "name": "My Component 1",
- "dependsOn": [ ]
}, - {
- "id": "my-component-2",
- "name": "My Component 2",
- "dependsOn": [ ]
}, - {
- "id": "my-component-3",
- "name": "My Component 3",
- "dependsOn": [
- "my-component-1"
]
}
]
}, - "provisioningInfo": {
}, - "componentsStatus": [
- {
- "componentId": "my-component-1",
- "descriptorVersion": "2.7.1",
- "status": "DEPLOYED"
}
]
}
}Retrieve the provisioning status of a deployment unit component in a given environment
path Parameters
| deployment-unit-id required | string Example: my-system:2 |
| component-id required | string Example: my-component-1 |
query Parameters
| environment required | string Example: environment=development |
| include-descriptor required | boolean Default: false Whether the response should include the deployment unit descriptor |
Responses
Response samples
- 200
- 400
- 500
{- "status": "DEPLOYED",
- "provisioningDetails": {
- "descriptorVersion": "2.7.1",
- "descriptor": {
- "id": "my-system:2",
- "name": "my-system",
- "version": "2.7.1",
- "components": [
- {
- "id": "my-component-1",
- "name": "My Component 1",
- "dependsOn": [ ]
}, - {
- "id": "my-component-2",
- "name": "My Component 2",
- "dependsOn": [ ]
}, - {
- "id": "my-component-3",
- "name": "My Component 3",
- "dependsOn": [
- "my-component-1"
]
}
]
}
}
}Computes the preview of all the deploy/undeploy operations that will be executed on the different components of a deployment unit
path Parameters
| deployment-unit-id required | string Example: my-system:2 |
query Parameters
| environment required | string Example: environment=development |
| autofill-target-status | boolean Default: false
|
Request Body schema: application/jsonrequired
Provisioning request
| descriptor required | object Deployment unit descriptor |
required | Array of objects Desired provisioning status on the different components |
| removeData | boolean Default: false Used to indicate to the tech adapters of components that are going to be undeployed, whether the underlying infrastructural data are to be removed as well. Actions |
| preventRedeploy | boolean Default: false If true, when a component is already deployed and its descriptor has remained unchanged, it will not be marked as to redeploy. Actions |
Responses
Request samples
- Payload
{- "descriptor": {
- "id": "my-system:2",
- "name": "my-system",
- "version": "2.7.1",
- "components": [
- {
- "id": "my-component-1",
- "name": "My Component 1",
- "dependsOn": [ ]
}, - {
- "id": "my-component-2",
- "name": "My Component 2",
- "dependsOn": [ ]
}, - {
- "id": "my-component-3",
- "name": "My Component 3",
- "dependsOn": [
- "my-component-1"
]
}
]
}, - "targetStatus": [
- {
- "componentId": "my-component-1",
- "targetStatus": "DEPLOYED",
- "action": "DEPLOY"
}
], - "removeData": false,
- "preventRedeploy": false
}Response samples
- 200
- 400
- 500
{- "outcome": "OK",
- "operations": [
- {
- "componentId": "my-component-1",
- "targetStatus": "DEPLOYED",
- "action": "DEPLOY",
- "reason": "REQUEST",
- "additionalReasons": [
- "REQUEST"
], - "dependencyOf": [
- "my-component-3"
], - "dependantOn": [
- "my-component-4"
]
}
], - "conflictingOperations": [ ]
}Validates and executes a provisioning plan
path Parameters
| deployment-unit-id required | string Example: my-system:2 |
query Parameters
| environment required | string Example: environment=development |
| unsafe | boolean Default: false If set to false, the request body is required to specify the desired provisioning status for each component in the descriptor. When set to true, any missing target status indications will be automatically inferred by trying to preserve the current provisioning status of the component. |
Request Body schema: application/jsonrequired
Provisioning request
| descriptor required | object Deployment unit descriptor |
required | Array of objects Desired provisioning status on the different components |
| removeData | boolean Default: false Used to indicate to the tech adapters of components that are going to be undeployed, whether the underlying infrastructural data are to be removed as well. Actions |
| preventRedeploy | boolean Default: false If true, when a component is already deployed and its descriptor has remained unchanged, it will not be marked as to redeploy. Actions |
Responses
Request samples
- Payload
{- "descriptor": {
- "id": "my-system:2",
- "name": "my-system",
- "version": "2.7.1",
- "components": [
- {
- "id": "my-component-1",
- "name": "My Component 1",
- "dependsOn": [ ]
}, - {
- "id": "my-component-2",
- "name": "My Component 2",
- "dependsOn": [ ]
}, - {
- "id": "my-component-3",
- "name": "My Component 3",
- "dependsOn": [
- "my-component-1"
]
}
]
}, - "targetStatus": [
- {
- "componentId": "my-component-1",
- "targetStatus": "DEPLOYED",
- "action": "DEPLOY"
}
], - "removeData": false,
- "preventRedeploy": false
}Response samples
- 202
- 400
- 422
- 500
"aa53de04-f563-4bd3-9407-fb963a00d26b"Terminates a running provisioning operation on the provided deployment unit
Interrupts any ongoing provisioning operation on the provided deployment unit. If the operation is associated with an active execution plan, the termination request will seamlessly pass to the plan. This last scenario mirrors a direct invocation of the v1/execution-plans/{token}/terminate endpoint.
path Parameters
| deployment-unit-id required | string Example: my-system:2 |
query Parameters
| environment required | string Example: environment=development |
| mode | string Default: "safe" Enum: "safe" "forced" Example: mode=safe
|
Responses
Response samples
- 400
- 500
{- "errors": [
- "string"
], - "code": "string",
- "userMessage": "string",
- "input": "string",
- "inputErrorField": "string",
- "moreInfo": {
- "problems": [
- "string"
], - "solutions": [
- "string"
]
}
}Search for provisioning operations
Returns a list of provisioning operations matching the provided filter criteria, ordered by start time
query Parameters
| environment | string Example: environment=development,production Filter by environment (comma-separated list) |
| status | string Example: status=SUCCEEDED,FAILED Filter by provisioning operation status (comma-separated list).
|
| include-descriptors | boolean Default: false Whether to include deployment unit descriptors in the result |
| sort-order | string Default: "desc" Enum: "asc" "desc" Sort order by start time |
| start-time-after | string <date-time> Example: start-time-after=2022-01-01T00:00:00Z Filter for operations that started after the specified time (exclusive).
Use this as a cursor when |
| start-time-before | string <date-time> Example: start-time-before=2022-01-01T00:00:00Z Filter for operations that started before the specified time (exclusive).
Use this as a cursor when |
| limit | integer Default: 20 Maximum number of results to return |
Responses
Response samples
- 200
- 400
- 500
{- "data": [
- {
- "operation": {
- "operationId": "string",
- "provisioningAction": "DEPLOY",
- "deploymentUnitId": "my-system:2",
- "environment": "development",
- "descriptorVersion": "2.7.1",
- "status": "SCHEDULED",
- "executionPlanId": "a12f3dc4-789b-456c-b2d9-12345678abcd",
- "startTime": "2019-08-24T14:15:22Z",
- "stopTime": "2019-08-24T14:15:22Z"
}, - "descriptor": { },
- "components": [
- {
- "componentId": "my-component-1",
- "provisioningAction": "DEPLOY",
- "operationStatus": "SCHEDULED"
}
]
}
], - "meta": {
- "pagination": {
- "limit": 10,
- "minStartTime": "2019-08-24T14:15:22Z",
- "maxStartTime": "2019-08-24T14:15:22Z"
}
}
}Validate a deployment request
Request Body schema: application/jsonrequired
A deployment request descriptor wrapped as a string into a simple object
| descriptor required | string Data Product descriptor in yaml format |
| removeData | boolean Default: false If true, when a component is undeployed, its underlying data will also be deleted |
Responses
Request samples
- Payload
{- "descriptor": "string",
- "removeData": false
}Response samples
- 200
- 400
- 500
{- "results": [
- {
- "validationPhaseKind": "INTERNAL_VALIDATION_PHASE",
- "validatedDescriptor": "string",
- "errors": {
- "errors": [
- "string"
], - "code": "string",
- "userMessage": "string",
- "input": "string",
- "inputErrorField": "string",
- "moreInfo": {
- "problems": [
- "string"
], - "solutions": [
- "string"
]
}
}, - "status": "RUNNING"
}
]
}Fetching logs for the specified provisioning plan
path Parameters
| provisioning_plan_id required | string The id of the plan for which we want to fetch the logs |
query Parameters
| level | string Filter for logs severity level to be displayed |
| task_id | string Filter for the Id of the task that generated the logs to be retrieved |
Responses
Response samples
- 200
- 400
- 500
[- {
- "timestamp": "2019-08-24T14:15:22Z",
- "severity": "DEBUG",
- "task": "string",
- "message": "string",
- "phase": "string"
}
]Deploy a data product starting from its descriptor Deprecated
Deprecation notice: Replaced by
v2/deployment-units/{deployment-unit-id}/provisioning
Request Body schema: application/jsonrequired
A data product descriptor wrapped as a string into a simple object
| descriptor required | string Data Product descriptor in yaml format |
| removeData | boolean Default: false If true, when a component is undeployed, its underlying data will also be deleted |
Responses
Request samples
- Payload
{- "descriptor": "string",
- "removeData": false
}Response samples
- 202
- 400
- 500
"string"Undeploy a data product starting from its descriptor Deprecated
Deprecation notice: Replaced by
v2/deployment-units/{deployment-unit-id}/provisioning
Request Body schema: application/jsonrequired
A data product descriptor wrapped as a string into a simple object
| descriptor required | string Data Product descriptor in yaml format |
| removeData | boolean Default: false If true, when a component is undeployed, its underlying data will also be deleted |
Responses
Request samples
- Payload
{- "descriptor": "string",
- "removeData": false
}Response samples
- 202
- 400
- 500
"string"Terminate the execution plan associated to the provided token
path Parameters
| token required | string token that identifies the execution plan |
query Parameters
| mode | string Default: "safe" Enum: "safe" "forced" Example: mode=safe it describe the termination mode |
Responses
Response samples
- 200
- 400
- 500
"string"Get the provisioning plans associated to a data product id and an environment of the environments list
query Parameters
| data-product-id required | string the id of the data product |
| environments required | string the environments to filter |
| version | string the data product version to filter |
| operations | string the operations to filter |
| include-descriptors | boolean Default: true whether to include the data product descriptor along with other task details |
| include-snapshot | boolean Default: true whether to retrieve also snapshot versions |
| offset | integer offset value |
| limit | integer limit value |
| ordering | string Enum: "asc" "desc" Sort order, default is desc |
Responses
Response samples
- 200
- 400
- 500
{- "provisioningPlans": [
- {
- "environment": "string",
- "dag": {
- "id": "string",
- "displayName": "string",
- "name": "string",
- "componentName": "string",
- "descriptor": "string",
- "version": "string",
- "status": "RUNNING",
- "action": "PROVISION",
- "result": "string",
- "startTime": "2019-08-24T14:15:22Z",
- "stopTime": "2019-08-24T14:15:22Z",
- "dependsOnTasks": [
- { }
], - "subPlanId": "string"
}
}
], - "page": {
- "offset": 0,
- "limit": 0,
- "count": 0
}
}Get the status for a deployment request Deprecated
Deprecation notice: Replaced by
v1/execution-plans/{token}/status
path Parameters
| token required | string token that identifies the request |
Responses
Response samples
- 200
- 400
- 500
{- "status": "RUNNING",
- "result": "string",
- "info": {
- "publicInfo": { },
- "privateInfo": { }
}
}Get the provisioning plan associated to a specific deploy request
path Parameters
| token required | string token that identifies the request |
query Parameters
| include-descriptors | boolean Default: true whether to include the data product descriptor along with other task details |
Responses
Response samples
- 200
- 400
- 500
{- "environment": "string",
- "dag": {
- "id": "string",
- "displayName": "string",
- "name": "string",
- "componentName": "string",
- "descriptor": "string",
- "version": "string",
- "status": "RUNNING",
- "action": "PROVISION",
- "result": "string",
- "startTime": "2019-08-24T14:15:22Z",
- "stopTime": "2019-08-24T14:15:22Z",
- "dependsOnTasks": [
- { }
], - "subPlanId": "string"
}
}Crate a new template metadata item
Request Body schema: application/jsonrequired
An object containing the template metadata
| id required | string |
| name required | string |
| description required | string |
| version required | string |
| infrastructureIdRef | string |
| url | string |
| environment | string |
object (InfraTemplateProperties) |
Responses
Request samples
- Payload
{- "id": "urn:dmb:itm:snowflake-outputport-provisioner:0",
- "name": "Snowflake Output Port",
- "description": "Provisions a Snowflake Output Port",
- "version": "0",
- "environment": "production"
}Response samples
- 200
- 400
- 500
"string"Upsert a tech adapter
Request Body schema: application/jsonrequired
| id required | string Unique identifier of the tech adapter |
| version required | string Version of the tech adapter used for display purposes |
| name required | string |
| description | string |
| labels | Array of strings Labels that can be used for filtering |
Responses
Request samples
- Payload
{- "id": "urn:dmb:itm:snowflake-outputport-provisioner:0",
- "version": "0",
- "name": "Snowflake Output Port Tech Adapter",
- "description": "Provisions a Snowflake Output Port",
- "labels": [
- "technology=snowflake"
]
}Response samples
- 200
- 400
- 500
{- "id": "urn:dmb:itm:snowflake-outputport-provisioner:0",
- "version": "0",
- "name": "Snowflake Output Port Tech Adapter",
- "description": "Provisions a Snowflake Output Port",
- "labels": [
- "technology=snowflake"
], - "deployments": {
- "environments": [
- {
- "environment": "production",
- "enabled": true
}
]
}
}Search for the registered tech adapters
query Parameters
| search | string Example: search=Snowflake Search keyword for filtering results by tech adapter name. Supports partial and case-insensitive matches. |
| labels | string Example: labels=label1,label2,label3 Filter tech adapters by a list of labels |
| sort-by | string Default: "name" Value: "name" Field name to sort by |
| sort-order | string Default: "asc" Enum: "asc" "desc" Sort order |
| limit | integer Default: 20 Maximum number of items to return |
| offset | integer Default: 0 Number of items to skip |
Responses
Response samples
- 200
- 400
- 500
{- "data": [
- {
- "id": "urn:dmb:itm:snowflake-outputport-provisioner:0",
- "version": "0",
- "name": "Snowflake Output Port Tech Adapter",
- "description": "Provisions a Snowflake Output Port",
- "labels": [
- "technology=snowflake"
], - "deployments": {
- "environments": [
- {
- "environment": "production",
- "enabled": true
}
]
}
}
], - "meta": {
- "pagination": {
- "offset": 0,
- "limit": 10,
- "total": 100
}
}
}Get a registered tech adapter
path Parameters
| id required | string Example: urn:dmb:itm:snowflake-outputport-provisioner:0 |
Responses
Response samples
- 200
- 400
- 404
- 500
{- "id": "urn:dmb:itm:snowflake-outputport-provisioner:0",
- "version": "0",
- "name": "Snowflake Output Port Tech Adapter",
- "description": "Provisions a Snowflake Output Port",
- "labels": [
- "technology=snowflake"
], - "deployments": {
- "environments": [
- {
- "environment": "production",
- "enabled": true
}
]
}
}Delete a registered tech adapter
path Parameters
| id required | string Example: urn:dmb:itm:snowflake-outputport-provisioner:0 |
Responses
Response samples
- 400
- 500
{- "errors": [
- "string"
], - "code": "string",
- "userMessage": "string",
- "input": "string",
- "inputErrorField": "string",
- "moreInfo": {
- "problems": [
- "string"
], - "solutions": [
- "string"
]
}
}Upsert a tech adapter deployment
Creates or updates a tech adapter deployment in one of the environments
path Parameters
| id required | string Example: urn:dmb:itm:snowflake-outputport-provisioner:0 |
| environment required | string Example: production |
Request Body schema: application/jsonrequired
| url required | string |
| enabled | boolean Default: true |
object (InfraTemplateProperties) |
Responses
Request samples
- Payload
{- "enabled": true,
- "properties": {
- "dataContractGuardian": {
- "policies": [
- {
- "resourceType": "dataproduct",
- "spec": {
- "id": "9f86d081-8143-4196-8536-41c91f876f7c",
- "name": "Data Contract Guardian Policy",
- "description": "Passive policy for data contract monitoring results"
}
}
]
}
}
}Response samples
- 200
- 400
- 404
- 500
{- "environment": "production",
- "enabled": true,
- "properties": {
- "dataContractGuardian": {
- "policies": [
- {
- "resourceType": "string",
- "id": "string"
}
]
}
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Get details about a tech adapter deployment
Returns information about a tech adapter deployment in one of the environments
path Parameters
| id required | string Example: urn:dmb:itm:snowflake-outputport-provisioner:0 |
| environment required | string Example: production |
Responses
Response samples
- 200
- 400
- 404
- 500
{- "environment": "production",
- "enabled": true,
- "properties": {
- "dataContractGuardian": {
- "policies": [
- {
- "resourceType": "string",
- "id": "string"
}
]
}
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a tech adapter deployment
path Parameters
| id required | string Example: urn:dmb:itm:snowflake-outputport-provisioner:0 |
| environment required | string Example: production |
Responses
Response samples
- 400
- 500
{- "errors": [
- "string"
], - "code": "string",
- "userMessage": "string",
- "input": "string",
- "inputErrorField": "string",
- "moreInfo": {
- "problems": [
- "string"
], - "solutions": [
- "string"
]
}
}Request the access to a specific provisioner and saves the result inside the Marketplace proxy.
Request Body schema: application/jsonrequired
An object containing the access request
| dataProductUrn required | string |
| outputPortId required | integer |
| outputPortUrn required | string |
| requestId required | string |
| identities required | Array of strings |
| environment required | string |
| accessControlFields | object |
Responses
Request samples
- Payload
{- "dataProductUrn": "string",
- "outputPortId": 0,
- "outputPortUrn": "string",
- "requestId": "string",
- "identities": [
- "string"
], - "environment": "string",
- "accessControlFields": { }
}Response samples
- 202
- 400
- 500
"string"Find resources
query Parameters
| environment | string environment name |
| resource-types | string Example: resource-types=type1,type2,type3 Comma-separated list of resource types to filter on |
| id | string deployment unit id |
| offset | integer number of items to skip before retrieving data. |
| limit | integer <= 50 Default: 5 maximum number of items to return |
Responses
Response samples
- 200
- 400
- 404
- 500
{- "content": [
- "string"
], - "page": {
- "offset": 0,
- "limit": 0,
- "count": 0
}
}Execute a reverse provisioning operation
Request Body schema: application/jsonrequired
| useCaseTemplateId required | string Component's use case template id |
| infrastructureTemplateIds required | Array of strings non-empty IDs of all the infrastructure templates involved in the component's provisioning |
| environment required | string Environment of the specific provisioners (infrastructure templates) to be involved in the reverse provisioning process |
| params | object Reverse provisioning input params |
| catalogInfo | object Content of the current |
Responses
Request samples
- Payload
{- "useCaseTemplateId": "urn:dmb:utm:op-standard:0.0.0",
- "infrastructureTemplateIds": [
- "urn:dmb:itm:op-provisioner:0"
], - "environment": "production",
- "params": {
- "inputA": "value A",
- "inputB": 1
}, - "catalogInfo": { }
}Response samples
- 202
- 400
- 500
"string"Get the execution plan associated to a reverse provisioning run
path Parameters
| token required | string token that identifies the execution plan |
Responses
Response samples
- 200
- 400
- 500
{- "environment": "string",
- "dag": {
- "id": "string",
- "displayName": "string",
- "name": "string",
- "status": "RUNNING",
- "result": { },
- "startTime": "2019-08-24T14:15:22Z",
- "stopTime": "2019-08-24T14:15:22Z",
- "dependsOnTasks": [ ]
}
}Fetch all the descriptors deployed with success from lastDeploymentTime until now
query Parameters
| kind required | string Value: "pre-deployed" the kind related to the descriptor that we want to take. "pre-deployed" for having a descriptor without deploy and build info |
| lastDeploymentTime | string <date-time> the time after which the coordinator must search for descriptors |
| limit required | integer the number of descriptors that the coordinator must return |
Responses
Response samples
- 200
- 400
- 500
{- "descriptors": [
- {
- "descriptor": "string",
- "operation": "Provision"
}
], - "lastDeploymentTime": "2019-08-24T14:15:22Z"
}