Skip to main content

Witboost API

Overview

Witboost API can be used to programmatically interact with the Witboost platform.

The available APIs are:

Builder API

The Builder module houses templates, resources and all that is needed to enhance the Data Developer experience. It also interacts with the Provisioning Coordinator to provide a fully automated provisioning experience.

Through the Builder API, you will be able to interact with essential parts of the Builder module.

Update the status of a hook

Witboost Hooks model third-party approval workflows.

Hooks are used, for instance, to model the Access Control workflow, where an Data Consumer asks access to a Data Owner. In case an Access Control request is forwarded to third-party ticketing systems, this endpoint helps Witboost understand whether the request is still pending, completed or rejected/failed.

In general, outside of the Access Control workflow, this endpoint is used to update the status of a hook, so that the Witboost platform knows how to proceed with a pending request.

Request Body schema: application/json
required

A resource to be evaluated

One of
status
required
string
Enum: "KO" "OK"

Represents the desired state of the hook. OK means the third-party interaction has been completed with a positive result, KO on the other hand can be used to represent a negative result. If the hook is attached to an action, signaling KO could prevent the action's callback to be invoked

hookInfo
object

A free-form object that will be stored as the hook's response data

Responses

Request samples

Content type
application/json
Example
{
  • "status": "OK",
  • "hookInfo": {
    }
}

Response samples

Content type
application/json
Example
{
  • "hookId": "34797dd1-1f25-48b0-89c7-14d2ce04a78b",
  • "hookName": "RemoteRequestHook",
  • "actionId": "0298b78f-4d77-45f7-a7a4-f16278144141",
  • "actionName": "AccessControlAction",
  • "creationAt": "2021-09-01T12:00:00Z",
  • "updateAt": "2021-09-01T12:00:00Z",
  • "status": "OK"
}

Register a Tech Adapter

This endpoint is used to register the Technology Adapter's URL and link it to the infrastructureTemplateId.

After deploying a new Technology Adapter into the infrastructure, all the components with a your chosen infrastructureTemplateId should invoke said microservice.

To do so, we need to link the infrastructureTemplateId with the Technology Adapter's URL where the microservice is located. Make sure the URL is reachable by the Witboost platform.

Request Body schema: application/json
required
id
required
string

Unique identifier of the Technology Adapter, in the form of a Witboost's URN, like "urn:dmb:itm:snowflake-outputport-provisioner:0"

name
required
string

Name of the Technology Adapter, like "Snowflake Output Port"

description
required
string

A description that explains the purpose of the Technology Adapter

version
required
string

The Technology Adapter's version, like "0". This version must be ALWAYS equal to the version defined in the URN identifier (the last section of the URN identifier after the last ":")

url
required
string

The URL of the Technology Adapter, like "http://my-tech-adapter:8093/snowflake-outputport-provisioner". This uRL must be reachable from the provisioning coordinator (from a pod in the Kubernetes cluster where the provisioning coordinator is running)

environment
required
string

The environment where the Technology Adapter is running, like "production". The environment here must be one of the environments configured for the Builder module of Witboost.

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
"OK"

Computational Governance Platform API

The Computational Governance Platform is a service responsible for managing policies and metrics that are used to evaluate resources.

It is a central service that allows the governance team to define policies and metrics that will check each resource in Witboost.

API Usage

The API allows the governance team to create, update, and delete policies and metrics programmatically.

It also allows the users of these APIs to evaluate resources against these policies and metrics.

Evaluate a resource against all policy that apply to its resource_type

Request Body schema: application/json
required

A resource to be evaluated

id
required
string

A unique identifier of the resource.

displayName
string
environment
required
string
resourceType
required
string
descriptor
required
string
labels
Array of strings

Labels to be attached to the evaluation report.

Responses

Request samples

Content type
application/json
{
  • "id": "string",
  • "displayName": "string",
  • "environment": "string",
  • "resourceType": "string",
  • "descriptor": "string",
  • "labels": [
    ]
}

Response samples

Content type
application/json
{
  • "reportId": "string"
}

Registers a new Metric in the Computational Governance Platform

Request Body schema: application/json
required

A metric object to be registered

name
required
string

Name of the metric. This is also used for display purposes.

description
required
string

Description of the metric

context
required
string
Enum: "global" "local"
strategy
required
string
Enum: "default" "previous_vs_current" "none"

Execution strategy of the governance entity

engine
required
string
Enum: "cue" "remote" "none"
trigger
required
string
Enum: "active" "passive"
timing
required
string
Enum: "deployment" "runtime"
interactionType
required
string
Enum: "user2user" "user2platform"
required
Array of objects
preprocessing
Array of strings
resourceType
required
string

Resource type compatible to this metric

tags
required
Array of strings

Descriptive tags to add contextual information on the metric

environment
required
string

Environment where this metric gets executed

cronExpression
string

Cron expression in Quartz-like syntax with 6 fields that go from seconds to day of week in the following order: Seconds (0-59), Minutes (0-59), Hour of Day (0-23), Day of Month (1-31), Month (1-12), Day Of Week (0-6 where 0 is Monday). The following special characters are not allowed: L, W, LW, #. Time zone: UTC

externalUrl
string

The external URL to be contacted to trigger the execution of the metric

object
required
object
additionalMetadata
required
string

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string",
  • "context": "global",
  • "strategy": "default",
  • "engine": "cue",
  • "trigger": "active",
  • "timing": "deployment",
  • "interactionType": "user2user",
  • "selectors": [
    ],
  • "preprocessing": [
    ],
  • "resourceType": "string",
  • "tags": [
    ],
  • "environment": "string",
  • "cronExpression": "string",
  • "externalUrl": "string",
  • "domain": {
    },
  • "thresholds": {
    },
  • "additionalMetadata": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "groupId": "string",
  • "status": "draft",
  • "name": "string",
  • "description": "string",
  • "context": "global",
  • "interactionType": "user2user",
  • "trigger": "active",
  • "timing": "deployment",
  • "version": 0,
  • "creationTime": "2019-08-24T14:15:22Z",
  • "updateTime": "2019-08-24T14:15:22Z",
  • "selectors": [
    ],
  • "preprocessing": [
    ],
  • "tags": [
    ],
  • "externalUrl": "string",
  • "strategy": "default",
  • "engine": "cue",
  • "resourceType": "string",
  • "cueScript": "string",
  • "severity": "info",
  • "environment": "string",
  • "cronExpression": "string",
  • "thresholds": {
    },
  • "domain": {
    },
  • "additionalMetadata": "string"
}

Updates a metric status in the Computational Governance Platform

path Parameters
id
required
string

metric unique ID

Request Body schema: application/json
required

The desired status for the metric

status
required
string
Enum: "draft" "grace" "disabled_grace" "enabled" "disabled" "deprecated" "deleted"

Status of the governance entity

Responses

Request samples

Content type
application/json
{
  • "status": "draft"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "groupId": "string",
  • "status": "draft",
  • "name": "string",
  • "description": "string",
  • "context": "global",
  • "interactionType": "user2user",
  • "trigger": "active",
  • "timing": "deployment",
  • "version": 0,
  • "creationTime": "2019-08-24T14:15:22Z",
  • "updateTime": "2019-08-24T14:15:22Z",
  • "selectors": [
    ],
  • "preprocessing": [
    ],
  • "tags": [
    ],
  • "externalUrl": "string",
  • "strategy": "default",
  • "engine": "cue",
  • "resourceType": "string",
  • "cueScript": "string",
  • "severity": "info",
  • "environment": "string",
  • "cronExpression": "string",
  • "thresholds": {
    },
  • "domain": {
    },
  • "additionalMetadata": "string"
}

Updates a metric

path Parameters
id
required
string

metric unique ID

Request Body schema: application/json
required

A metric object to be update

groupId
required
string
name
required
string

Name of the metric. This is also used for display purposes.

version
required
integer
description
required
string

Description of the metric

context
required
string
Enum: "global" "local"
strategy
required
string
Enum: "default" "previous_vs_current" "none"

Execution strategy of the governance entity

engine
required
string
Enum: "cue" "remote" "none"
trigger
required
string
Enum: "active" "passive"
timing
required
string
Enum: "deployment" "runtime"
interactionType
required
string
Enum: "user2user" "user2platform"
required
Array of objects
preprocessing
Array of strings
resourceType
required
string

Resource type compatible to this metric

tags
required
Array of strings

Descriptive tags to add contextual information on the metric

environment
required
string

Environment where this metric gets executed

cronExpression
string

Cron expression in Quartz-like syntax with 6 fields that go from seconds to day of week in the following order: Seconds (0-59), Minutes (0-59), Hour of Day (0-23), Day of Month (1-31), Month (1-12), Day Of Week (0-6 where 0 is Monday). The following special characters are not allowed: L, W, LW, #. Time zone: UTC

externalUrl
string

The external URL to be contacted to trigger the execution of the metric

object
object
additionalMetadata
required
string

Responses

Request samples

Content type
application/json
{
  • "groupId": "string",
  • "name": "string",
  • "version": 0,
  • "description": "string",
  • "context": "global",
  • "strategy": "default",
  • "engine": "cue",
  • "trigger": "active",
  • "timing": "deployment",
  • "interactionType": "user2user",
  • "selectors": [
    ],
  • "preprocessing": [
    ],
  • "resourceType": "string",
  • "tags": [
    ],
  • "environment": "string",
  • "cronExpression": "string",
  • "externalUrl": "string",
  • "domain": {
    },
  • "thresholds": {
    },
  • "additionalMetadata": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "groupId": "string",
  • "status": "draft",
  • "name": "string",
  • "description": "string",
  • "context": "global",
  • "interactionType": "user2user",
  • "trigger": "active",
  • "timing": "deployment",
  • "version": 0,
  • "creationTime": "2019-08-24T14:15:22Z",
  • "updateTime": "2019-08-24T14:15:22Z",
  • "selectors": [
    ],
  • "preprocessing": [
    ],
  • "tags": [
    ],
  • "externalUrl": "string",
  • "strategy": "default",
  • "engine": "cue",
  • "resourceType": "string",
  • "cueScript": "string",
  • "severity": "info",
  • "environment": "string",
  • "cronExpression": "string",
  • "thresholds": {
    },
  • "domain": {
    },
  • "additionalMetadata": "string"
}

Clones a metric and bumps its version

path Parameters
id
required
string

metric unique ID

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "groupId": "string",
  • "status": "draft",
  • "name": "string",
  • "description": "string",
  • "context": "global",
  • "interactionType": "user2user",
  • "trigger": "active",
  • "timing": "deployment",
  • "version": 0,
  • "creationTime": "2019-08-24T14:15:22Z",
  • "updateTime": "2019-08-24T14:15:22Z",
  • "selectors": [
    ],
  • "preprocessing": [
    ],
  • "tags": [
    ],
  • "externalUrl": "string",
  • "strategy": "default",
  • "engine": "cue",
  • "resourceType": "string",
  • "cueScript": "string",
  • "severity": "info",
  • "environment": "string",
  • "cronExpression": "string",
  • "thresholds": {
    },
  • "domain": {
    },
  • "additionalMetadata": "string"
}

Test a metric against its resource perimeter

path Parameters
id
required
string

Metric ID

Request Body schema: application/json
required

Additional options for the test

Array of objects

Additional selectors to restrict the resources perimeter

Array
description
required
string
path
required
string
values
required
Array of strings

Responses

Request samples

Content type
application/json
{
  • "filters": [
    ]
}

Response samples

Content type
application/json
{
  • "reportId": "string"
}

Push a set of evaluation results for a metric in the Governance Platform

path Parameters
id
required
string

passive metric unique ID

query Parameters
environment
required
string

Environment to which these evaluation correspond to

Request Body schema: application/json
required

A list of evaluation results to generate a report. Each result is the consequence of a metric evaluating a resource.

Array
required
object
required
object

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
{
  • "id": "string",
  • "environment": "string",
  • "evaluationScope": "evaluation",
  • "evaluationResults": [
    ],
  • "creationTime": "2019-08-24T14:15:22Z",
  • "updateTime": "2019-08-24T14:15:22Z",
  • "status": "completedWithSuccess"
}

Registers a new Policy in the Computational Governance Platform

Request Body schema: application/json
required

A policy object to be registered

name
required
string

Name of the policy. This is also used for display purposes.

description
required
string

Description of the policy

context
required
string
Enum: "global" "local"
strategy
required
string
Enum: "default" "previous_vs_current" "none"

Execution strategy of the governance entity

engine
required
string
Enum: "cue" "remote" "none"
trigger
required
string
Enum: "active" "passive"
timing
required
string
Enum: "deployment" "runtime"
interactionType
required
string
Enum: "user2user" "user2platform"
required
Array of objects
preprocessing
Array of strings
resourceType
required
string

Resource type compatible to this policy

tags
required
Array of strings

Descriptive tags to add contextual information on the policy

environment
required
string

Environment where this policy gets executed

cronExpression
string

Cron expression in Quartz-like syntax with 6 fields that go from seconds to day of week in the following order: Seconds (0-59), Minutes (0-59), Hour of Day (0-23), Day of Month (1-31), Month (1-12), Day Of Week (0-6 where 0 is Monday). The following special characters are not allowed: L, W, LW, #. Time zone: UTC

externalUrl
string

If engine is remote, this field contains the external URL to be contacted to trigger the execution of the policy

cueScript
string

If engine is cue, this field contains the CUE script

severity
required
string
Enum: "info" "warning" "error"

Describes the severity of the governance entity in case of a failing condition

additionalMetadata
required
string

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string",
  • "context": "global",
  • "strategy": "default",
  • "engine": "cue",
  • "trigger": "active",
  • "timing": "deployment",
  • "interactionType": "user2user",
  • "selectors": [
    ],
  • "preprocessing": [
    ],
  • "resourceType": "string",
  • "tags": [
    ],
  • "environment": "string",
  • "cronExpression": "string",
  • "externalUrl": "string",
  • "cueScript": "string",
  • "severity": "info",
  • "additionalMetadata": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "groupId": "string",
  • "status": "draft",
  • "name": "string",
  • "description": "string",
  • "context": "global",
  • "interactionType": "user2user",
  • "trigger": "active",
  • "timing": "deployment",
  • "version": 0,
  • "creationTime": "2019-08-24T14:15:22Z",
  • "updateTime": "2019-08-24T14:15:22Z",
  • "selectors": [
    ],
  • "preprocessing": [
    ],
  • "tags": [
    ],
  • "externalUrl": "string",
  • "strategy": "default",
  • "engine": "cue",
  • "resourceType": "string",
  • "cueScript": "string",
  • "severity": "info",
  • "environment": "string",
  • "cronExpression": "string",
  • "thresholds": {
    },
  • "domain": {
    },
  • "additionalMetadata": "string"
}

Updates a policy status

path Parameters
id
required
string

policy unique ID

Request Body schema: application/json
required

The desired status for the policy

status
required
string
Enum: "draft" "grace" "disabled_grace" "enabled" "disabled" "deprecated" "deleted"

Status of the governance entity

Responses

Request samples

Content type
application/json
{
  • "status": "draft"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "groupId": "string",
  • "status": "draft",
  • "name": "string",
  • "description": "string",
  • "context": "global",
  • "interactionType": "user2user",
  • "trigger": "active",
  • "timing": "deployment",
  • "version": 0,
  • "creationTime": "2019-08-24T14:15:22Z",
  • "updateTime": "2019-08-24T14:15:22Z",
  • "selectors": [
    ],
  • "preprocessing": [
    ],
  • "tags": [
    ],
  • "externalUrl": "string",
  • "strategy": "default",
  • "engine": "cue",
  • "resourceType": "string",
  • "cueScript": "string",
  • "severity": "info",
  • "environment": "string",
  • "cronExpression": "string",
  • "thresholds": {
    },
  • "domain": {
    },
  • "additionalMetadata": "string"
}

Test a policy against its resource perimeter

path Parameters
id
required
string

Policy ID

Request Body schema: application/json
required

Additional options for the test

Array of objects

Additional selectors to restrict the resources perimeter

Array
description
required
string
path
required
string
values
required
Array of strings

Responses

Request samples

Content type
application/json
{
  • "filters": [
    ]
}

Response samples

Content type
application/json
{
  • "reportId": "string"
}

Updates a policy

path Parameters
id
required
string

policy unique ID

Request Body schema: application/json
required

A policy object to be update

groupId
required
string
name
required
string

Name of the policy. This is also used for display purposes.

version
required
integer
description
required
string

Description of the policy

context
required
string
Enum: "global" "local"
strategy
required
string
Enum: "default" "previous_vs_current" "none"

Execution strategy of the governance entity

engine
required
string
Enum: "cue" "remote" "none"
trigger
required
string
Enum: "active" "passive"
timing
required
string
Enum: "deployment" "runtime"
interactionType
required
string
Enum: "user2user" "user2platform"
required
Array of objects
preprocessing
Array of strings
resourceType
required
string

Resource type compatible to this policy

tags
required
Array of strings

Descriptive tags to add contextual information on the policy

environment
required
string

Environment where this policy gets executed

cronExpression
string

Cron expression in Quartz-like syntax with 6 fields that go from seconds to day of week in the following order: Seconds (0-59), Minutes (0-59), Hour of Day (0-23), Day of Month (1-31), Month (1-12), Day Of Week (0-6 where 0 is Monday). The following special characters are not allowed: L, W, LW, #. Time zone: UTC

externalUrl
string

If engine is remote, this field contains the external URL to be contacted to trigger the execution of the policy

cueScript
string

If engine is cue, this field contains the CUE script

severity
required
string
Enum: "info" "warning" "error"

Describes the severity of the governance entity in case of a failing condition

additionalMetadata
required
string

Responses

Request samples

Content type
application/json
{
  • "groupId": "string",
  • "name": "string",
  • "version": 0,
  • "description": "string",
  • "context": "global",
  • "strategy": "default",
  • "engine": "cue",
  • "trigger": "active",
  • "timing": "deployment",
  • "interactionType": "user2user",
  • "selectors": [
    ],
  • "preprocessing": [
    ],
  • "resourceType": "string",
  • "tags": [
    ],
  • "environment": "string",
  • "cronExpression": "string",
  • "externalUrl": "string",
  • "cueScript": "string",
  • "severity": "info",
  • "additionalMetadata": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "groupId": "string",
  • "status": "draft",
  • "name": "string",
  • "description": "string",
  • "context": "global",
  • "interactionType": "user2user",
  • "trigger": "active",
  • "timing": "deployment",
  • "version": 0,
  • "creationTime": "2019-08-24T14:15:22Z",
  • "updateTime": "2019-08-24T14:15:22Z",
  • "selectors": [
    ],
  • "preprocessing": [
    ],
  • "tags": [
    ],
  • "externalUrl": "string",
  • "strategy": "default",
  • "engine": "cue",
  • "resourceType": "string",
  • "cueScript": "string",
  • "severity": "info",
  • "environment": "string",
  • "cronExpression": "string",
  • "thresholds": {
    },
  • "domain": {
    },
  • "additionalMetadata": "string"
}

Clones a policy and bumps its version

path Parameters
id
required
string

policy unique ID

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "groupId": "string",
  • "status": "draft",
  • "name": "string",
  • "description": "string",
  • "context": "global",
  • "interactionType": "user2user",
  • "trigger": "active",
  • "timing": "deployment",
  • "version": 0,
  • "creationTime": "2019-08-24T14:15:22Z",
  • "updateTime": "2019-08-24T14:15:22Z",
  • "selectors": [
    ],
  • "preprocessing": [
    ],
  • "tags": [
    ],
  • "externalUrl": "string",
  • "strategy": "default",
  • "engine": "cue",
  • "resourceType": "string",
  • "cueScript": "string",
  • "severity": "info",
  • "environment": "string",
  • "cronExpression": "string",
  • "thresholds": {
    },
  • "domain": {
    },
  • "additionalMetadata": "string"
}

Push a set of evaluation results for a policy in the Governance Platform

path Parameters
id
required
string

passive policy unique ID

query Parameters
environment
required
string

Environment to which these evaluation correspond to

Request Body schema: application/json
required

A list of evaluation results to generate a report. Each result is the consequence of a policy evaluating a resource.

Array
required
object
required
object

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
{
  • "id": "string",
  • "environment": "string",
  • "evaluationScope": "evaluation",
  • "evaluationResults": [
    ],
  • "creationTime": "2019-08-24T14:15:22Z",
  • "updateTime": "2019-08-24T14:15:22Z",
  • "status": "completedWithSuccess"
}

Get evaluation reports by applying filters

query Parameters
policyId
string

Policy id

resourceName
string

Resource name. Not yet supported

Responses

Response samples

Content type
application/json
{
  • "evaluationReports": [
    ]
}

Get an evaluation report by ID

path Parameters
id
required
string

Policy id

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "environment": "string",
  • "evaluationScope": "evaluation",
  • "evaluationResults": [
    ],
  • "creationTime": "2019-08-24T14:15:22Z",
  • "updateTime": "2019-08-24T14:15:22Z",
  • "status": "completedWithSuccess"
}

Find and schedule active policies with an attached cron expression

Responses

Response samples

Content type
application/json
{
  • "error": "string",
  • "code": "string",
  • "userMessage": "string",
  • "input": "string",
  • "inputErrorField": "string",
  • "moreInfo": {
    }
}

Gets the list of the existing Resource types

Responses

Response samples

Content type
application/json
{
  • "resource_types": [
    ]
}

Registers or updates a resource type

Request Body schema: application/json
required
name
required
string

Unique resource type name and identifier

displayName
string

Resource type display name. It defaults to name if not specified

required
object

Information about the shape of descriptors of this resource type

required
object

Details about the service implementing the perimeter resolver API

cuePreprocessScript
string

Responses

Request samples

Content type
application/json
{
  • "name": "my-resource-type",
  • "displayName": "My Resource Type",
  • "descriptorConfiguration": {
    },
  • "resolverConfiguration": {
    },
  • "cuePreprocessScript": "string"
}

Response samples

Content type
application/json
{
  • "name": "my-resource-type",
  • "displayName": "My Resource Type",
  • "descriptorConfiguration": {
    },
  • "resolverConfiguration": {
    },
  • "cuePreprocessScript": "string"
}

Retrieves the configuration of a resource type

path Parameters
resourceType
required
string
Example: my-resource-type

Resource type name

Responses

Response samples

Content type
application/json
{
  • "name": "my-resource-type",
  • "displayName": "My Resource Type",
  • "descriptorConfiguration": {
    },
  • "resolverConfiguration": {
    },
  • "cuePreprocessScript": "string"
}

Computes a list of policies with the highest failure rate in a given date interval

Request Body schema: application/json
required
environment
required
string
limit
required
integer [ 1 .. 50 ]
Default: 10

Maximum number of policies to be returned.

startDate
required
string <date-time>

Lower bound of the date interval (inclusive)

endDate
required
string <date-time>

Upper bound of the date interval (inclusive)

includePolicyDetails
required
boolean
Default: false

Whether to include full policy details in the results or just policy ids (faster)

Responses

Request samples

Content type
application/json
{
  • "environment": "string",
  • "limit": 10,
  • "startDate": "2019-08-24T14:15:22Z",
  • "endDate": "2019-08-24T14:15:22Z",
  • "includePolicyDetails": false
}

Response samples

Content type
application/json
[
  • {
    }
]

Computes policy execution stats

Request Body schema: application/json
required
environment
required
string
startDate
required
string <date-time>

Lower bound of the date interval (inclusive)

endDate
required
string <date-time>

Upper bound of the date interval (inclusive)

Responses

Request samples

Content type
application/json
{
  • "environment": "string",
  • "startDate": "2019-08-24T14:15:22Z",
  • "endDate": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
[
  • {
    }
]

Computes failed policy evaluation stats

Request Body schema: application/json
required
environment
required
string
startDate
required
string <date-time>

Lower bound of the date interval (inclusive)

endDate
required
string <date-time>

Upper bound of the date interval (inclusive)

reportLabels
Array of strings

If defined, only failed executions linked to an evaluation report containing all these labels will be included in the computation

Responses

Request samples

Content type
application/json
{
  • "environment": "string",
  • "startDate": "2019-08-24T14:15:22Z",
  • "endDate": "2019-08-24T14:15:22Z",
  • "reportLabels": [
    ]
}

Response samples

Content type
application/json
[
  • {
    }
]

Counts active policy violations for a resource

Counts the policy violations for a resource, grouped by outcome, related to active policies

Request Body schema: application/json
required
resources
required
Array of strings

Resource names

environment
required
string
timing
string
Enum: "deployment" "runtime"

Responses

Request samples

Content type
application/json
{
  • "resources": [
    ],
  • "environment": "string",
  • "timing": "deployment"
}

Response samples

Content type
application/json
{
  • "items": [
    ]
}

Get active policy violations for a resource

Retrieves currently active policy violations on a resource

path Parameters
resource
required
string

Resource name

query Parameters
env
required
string

Environment

policies
string
Example: policies=policy-1,policy-2,policy-3

Comma-separated list of policy ids to filter by

timing
string
Enum: "deployment" "runtime"

Filter on the timing context in which the violations were generated

Responses

Response samples

Content type
application/json
{
  • "violations": [
    ]
}

Get active metric results for a resource

Retrieves evaluation results for a resource related to active metrics

path Parameters
resource
required
string

Resource name

query Parameters
env
required
string

Environment

metrics
string
Example: metrics=metric-1,metric-2,metric-3

Comma-separated list of metric ids to filter on

timing
string
Enum: "deployment" "runtime"

Filter on the timing context in which the metrics were evaluated

Responses

Response samples

Content type
application/json
{
  • "results": [
    ]
}

Update current evaluation status

Emits policy violations and updates current metric values based on the evaluation results within the provided report

path Parameters
reportId
required
string

Evaluation report id

Request Body schema: application/json
required
timing
required
string
Enum: "deployment" "runtime"

Responses

Request samples

Content type
application/json
{
  • "timing": "deployment"
}

Response samples

Content type
application/json
{
  • "errors": [
    ],
  • "code": "string",
  • "userMessage": "string",
  • "input": "string",
  • "inputErrorField": "string",
  • "moreInfo": {
    }
}

Provisioning Coordinator API

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.

API Usage

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/json
required

A deployment request descriptor wrapped as a string into a simple object

descriptor
required
string

Responses

Request samples

Content type
application/json
{
  • "descriptor": "string"
}

Response samples

Content type
application/json
"string"

Validate a deployment request

path Parameters
token
required
string

token that identifies the request

Responses

Response samples

Content type
application/json
{
  • "status": "RUNNING",
  • "validationSummaryStatus": {
    }
}

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

Content type
application/json
{
  • "status": "DEPLOYED",
  • "provisioningDetails": {
    }
}

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

Content type
application/json
{
  • "status": "DEPLOYED",
  • "provisioningDetails": {
    }
}

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
  • if true - the targetStatus array in the request body will be filled with all the components in the provided descriptor (including the root-component in case of deployment unit level provisioning) that are not already specified. The auto-generated target status value will try to preserve the current component provisioning status, if it is not corrupt.

  • if false - the targetStatus array in the request body must include all the components in the descriptor (including the root-component in case of deployment unit level provisioning). Otherwise, an error will be returned.

Request Body schema: application/json
required

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 UNDEPLOY and UNDEPLOY_AND_REMOVE_DATA in targetStatus overwrite this indication at component-level

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 DEPLOY and NO_ACTION in targetStatus overwrite this indication at component-level

Responses

Request samples

Content type
application/json
{
  • "descriptor": {
    },
  • "targetStatus": [
    ],
  • "removeData": false,
  • "preventRedeploy": false
}

Response samples

Content type
application/json
{
  • "outcome": "OK",
  • "operations": [
    ],
  • "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/json
required

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 UNDEPLOY and UNDEPLOY_AND_REMOVE_DATA in targetStatus overwrite this indication at component-level

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 DEPLOY and NO_ACTION in targetStatus overwrite this indication at component-level

Responses

Request samples

Content type
application/json
{
  • "descriptor": {
    },
  • "targetStatus": [
    ],
  • "removeData": false,
  • "preventRedeploy": false
}

Response samples

Content type
application/json
"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
  • safe - when the operation is linked to an active execution plan, all running tasks within the plan will receive an abort signal, prompting the plan to wait until each task undergoes a managed termination routine. If certain tasks do not support termination, the plan will wait until they are finished. The execution of tasks in a waiting status will not be prevented.
  • forced - when the operation is linked to an active execution plan, the plan's execution will be abruptly halted without the transmission of any abort signals.

Responses

Response samples

Content type
application/json
{
  • "errors": [
    ],
  • "code": "string",
  • "userMessage": "string",
  • "input": "string",
  • "inputErrorField": "string",
  • "moreInfo": {
    }
}

Validate a deployment request

Request Body schema: application/json
required

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

Content type
application/json
{
  • "descriptor": "string",
  • "removeData": false
}

Response samples

Content type
application/json
{
  • "results": [
    ]
}

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

Content type
application/json
[
  • {
    }
]

Deploy a data product starting from its descriptor Deprecated

Deprecation notice: Replaced by v2/deployment-units/{deployment-unit-id}/provisioning

Request Body schema: application/json
required

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

Content type
application/json
{
  • "descriptor": "string",
  • "removeData": false
}

Response samples

Content type
application/json
"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/json
required

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

Content type
application/json
{
  • "descriptor": "string",
  • "removeData": false
}

Response samples

Content type
application/json
"string"

Get the status of an execution plan

path Parameters
token
required
string

execution plan token

Responses

Response samples

Content type
application/json
{
  • "status": "RUNNING"
}

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

Content type
application/json
"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

Content type
application/json
{
  • "provisioningPlans": [
    ],
  • "page": {
    }
}

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

Content type
application/json
{
  • "status": "RUNNING",
  • "result": "string",
  • "info": {
    }
}

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

Content type
application/json
{
  • "environment": "string",
  • "dag": {
    }
}

Terminate the plan with the provided token Deprecated

Deprecation notice: Replaced by v1/execution-plans/{token}/terminate

path Parameters
token
required
string

token that identifies the request

Responses

Response samples

Content type
application/json
"string"

Crate a new template metadata item

Request Body schema: application/json
required

An object containing the template metadata

id
required
string
name
required
string
description
required
string
version
required
string
infrastructureIdRef
string
url
string
environment
string

Responses

Request samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "description": "string",
  • "version": "string",
  • "infrastructureIdRef": "string",
  • "url": "string",
  • "environment": "string"
}

Response samples

Content type
application/json
"string"

Reload the configuration

Responses

Get the current log level

Responses

Response samples

Content type
application/json
"TRACE"

Change the log level

path Parameters
level
required
string
Enum: "TRACE" "DEBUG" "INFO" "WARN" "ERROR" "OFF"

Log level

Responses

Response samples

Content type
application/json
"TRACE"

Request the access to a specific provisioner and saves the result inside the Marketplace proxy.

Request Body schema: application/json
required

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

Content type
application/json
{
  • "dataProductUrn": "string",
  • "outputPortId": 0,
  • "outputPortUrn": "string",
  • "requestId": "string",
  • "identities": [
    ],
  • "environment": "string",
  • "accessControlFields": { }
}

Response samples

Content type
application/json
"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

Content type
application/json
{
  • "content": [
    ],
  • "page": {
    }
}

Execute a reverse provisioning operation

Request Body schema: application/json
required
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 catalog-info.yaml of the component

Responses

Request samples

Content type
application/json
{
  • "useCaseTemplateId": "urn:dmb:utm:op-standard:0.0.0",
  • "infrastructureTemplateIds": [
    ],
  • "environment": "production",
  • "params": {
    },
  • "catalogInfo": { }
}

Response samples

Content type
application/json
"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

Content type
application/json
{
  • "environment": "string",
  • "dag": {
    }
}

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

Content type
application/json
{
  • "descriptors": [
    ],
  • "lastDeploymentTime": "2019-08-24T14:15:22Z"
}