OutSystems ODC Deployments API

REST endpoints for publishing and deploying assets across the environments (stages) in an OutSystems Developer Cloud organization, including rollback.

OpenAPI Specification

outsystems-deployments-api-v1-openapi.json Raw ↑
{
  "openapi": "3.0.3",
  "info": {
    "title": "Deployments API",
    "description": "REST endpoints for publishing and deploying assets in environments (stages) in your organization.\n",
    "version": "v1"
  },
  "servers": [
    {
      "url": "https://ODC_PORTAL_DOMAIN/api/deployments/v1",
      "description": "Replace ODC_PORTAL_DOMAIN with the domain of your organization."
    },
    {
      "url": "https://{odc-portal-domain}/api/deployments/v1",
      "description": "Replace {odc-portal-domain} with the domain of your organization.",
      "variables": {
        "odc-portal-domain": {
          "default": "ODC_PORTAL_DOMAIN",
          "description": "The domain of your organization"
        }
      }
    }
  ],
  "paths": {
    "/deployment-operations": {
      "get": {
        "tags": [
          "deployment-operations"
        ],
        "summary": "Returns a list of deployments.",
        "description": "Returns a list of deployments that match a given filter. Use query parameters to refine the search.\n\nAPI Client needs the **Stage > View stage** permission for the operation.",
        "operationId": "DeploymentOperations_Filter",
        "parameters": [
          {
            "name": "environmentKey",
            "in": "query",
            "description": "Filter by environment key, if filled.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter by status of the deployment, if filled.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Status"
                }
              ]
            }
          },
          {
            "name": "assetKey",
            "in": "query",
            "description": "Filter deployments that contain given asset unique identifier, if filled.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "revision",
            "in": "query",
            "description": "Filter assets by revision number, if filled.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "portfolioKey",
            "in": "query",
            "description": "Filter assets by portfolio key, if filled.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "operations",
            "in": "query",
            "description": "Filter deployments that contain a given operation, if filled.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DeploymentOperationsType"
              }
            }
          },
          {
            "name": "createdDateSince",
            "in": "query",
            "description": "Filter assets created from one point in time on, if filled.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "createdDateTo",
            "in": "query",
            "description": "Filter assets created up to one point in time, if filled.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "permissionFilter",
            "in": "query",
            "description": "Filter by permission type. Format: 'PermissionType' or 'PermissionType.EnvironmentKey' for environment-specific permissions. Available values: AppViewSourceCode | AppDebug | AppChange | AppDelete | AppDeploy | AppRelease | AppMonitor | AppMonitorUserInfo | AppSecurityView | CodeQualityManage | CodeQualityView | AppUserView | AppAccessManage | AppGroupManage | CfgView | ConnConfig | AppCfgChange. Example: 'AppDeploy' or 'AppDeploy.123e4567-e89b-12d3-a456-426614174000'",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Max number of elements that should be returned in a single page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset of the last page, to get the following page with the same filters applied.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order of the elements.\n-element1 for descending, element2 for ascending.\nMultiple orders joined by comma.\nExample -element1,element2 to sort by element1 descending then by element2 ascending\nCurrently supported sort values: CreatedAt, UpdatedAt, ApplicationKey, AssetKey, ApplicationName, AssetName, FinishedAt\nDefault sort: -CreatedAt",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Int32NullableDeploymentOperationResponsePagedListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-os-permissions": "API Client needs the **Stage > View stage** permission for the operation."
      },
      "post": {
        "tags": [
          "deployment-operations"
        ],
        "summary": "Requests the creation or deletion of a deployment.",
        "description": "Requests the creation of a deployment-operation which can be a Deployment, Undeploy or ApplyConfigs. It returns the created deployment operation.\n\nAPI Client needs the **Release management > Deploy assets** permission for the operation.",
        "operationId": "DeploymentOperations_Post",
        "requestBody": {
          "description": "Deployment operation request data",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DeploymentOperationRequest"
                  }
                ],
                "description": "Deployment job request data"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DeploymentOperationRequest"
                  }
                ],
                "description": "Deployment job request data"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeploymentOperationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-os-permissions": "API Client needs the **Release management > Deploy assets** permission for the operation."
      }
    },
    "/deployment-operations/{operationKey}": {
      "get": {
        "tags": [
          "deployment-operations"
        ],
        "summary": "Returns one deployment given the deployment operation key.",
        "description": "Returns one deployment given the deployment operation key. If the deployment is not found, a 404 error is returned.\n\nAPI Client needs the **Stage > View stage** permission for the operation.",
        "operationId": "DeploymentOperations_Get",
        "parameters": [
          {
            "name": "operationKey",
            "in": "path",
            "description": "Deployment unique identifier",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeploymentOperationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-os-permissions": "API Client needs the **Stage > View stage** permission for the operation."
      }
    },
    "/deployment-operations/{operationKey}/messages": {
      "get": {
        "tags": [
          "deployment-operations"
        ],
        "summary": "Returns deployment log messages for a given deployment operation key.",
        "description": "Returns deployment log messages for a given deployment operation key. If the deployment is not found, a 404 error is returned.\n\nAPI Client needs the **Stage > View stage** permission for the operation.",
        "operationId": "DeploymentOperations_GetMessages",
        "parameters": [
          {
            "name": "operationKey",
            "in": "path",
            "description": "Deployment unique identifier",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Limit of elements in the page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset from previous page. Don't fill if first page.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StringMessageDetailsV1TaskProgressMessagePagedListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-os-permissions": "API Client needs the **Stage > View stage** permission for the operation."
      }
    },
    "/publish-operations": {
      "get": {
        "tags": [
          "publish-operations"
        ],
        "summary": "Returns a list of publications that match a given filter.",
        "description": "Returns a list of publications that match a given filter. Use query parameters to refine the search.\n\nAPI Client needs the **Stage > View stage** permission for the operation.",
        "operationId": "PublishOperations_Filter",
        "parameters": [
          {
            "name": "environmentKey",
            "in": "query",
            "description": "Filter by environment key, if filled.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter by status, if filled.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Status"
                }
              ]
            }
          },
          {
            "name": "revision",
            "in": "query",
            "description": "Filter assets by revision number, if filled.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "assetKey",
            "in": "query",
            "description": "Filter by Asset key, if filled.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "portfolioKey",
            "in": "query",
            "description": "Filter assets by portfolio key, if filled.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "createdDateSince",
            "in": "query",
            "description": "Filter assets created from one point in time on, if filled.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "createdDateTo",
            "in": "query",
            "description": "Filter assets created up to one point in time, if filled.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Max number of elements that should be returned in a single page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset of the last page, to get the following page with the same filters applied.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order of the elements.\n-element1 for descending, element2 for ascending.\nMultiple orders joined by comma.\nExample -element1,element2 to sort by element1 descending then by element2 ascending\nCurrently supported sort values: CreatedAt, UpdatedAt, ApplicationKey, AssetKey, ApplicationName, AssetName, FinishedAt\nDefault sort: -CreatedAt",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Int32NullablePublishOperationResponsePagedListResponse"
                }
              }
            }
          }
        },
        "x-os-permissions": "API Client needs the **Stage > View stage** permission for the operation."
      },
      "post": {
        "tags": [
          "publish-operations"
        ],
        "summary": "Requests the creation of a new publication.",
        "description": "Requests the creation of a publish-operation. It returns the created publication operation.\n\nAPI Client needs the **Asset management > Change** permission for the operation.",
        "operationId": "PublishOperations_Post",
        "requestBody": {
          "description": "Publish operation request data",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PublishOperationRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PublishOperationRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublishOperationResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-os-permissions": "API Client needs the **Asset management > Change** permission for the operation."
      }
    },
    "/publish-operations/{operationKey}": {
      "get": {
        "tags": [
          "publish-operations"
        ],
        "summary": "Return a publication by its operation key.",
        "description": "Returns a publication by its operation key. If the publication is not found, a 404 error is returned.\n\nAPI Client needs the **Stage > View stage** permission for the operation.",
        "operationId": "PublishOperations_Get",
        "parameters": [
          {
            "name": "operationKey",
            "in": "path",
            "description": "Publication key",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublishOperationResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-os-permissions": "API Client needs the **Stage > View stage** permission for the operation."
      }
    },
    "/publish-operations/{operationKey}/messages": {
      "get": {
        "tags": [
          "publish-operations"
        ],
        "summary": "Returns publication log messages for a given publication operation key.",
        "description": "Returns publication log messages for a given publication operation key. If the publication is not found, a 404 error is returned.\n\nAPI Client needs the **Stage > View stage** permission for the operation.",
        "operationId": "PublishOperations_GetMessages",
        "parameters": [
          {
            "name": "operationKey",
            "in": "path",
            "description": "Publication unique identifier",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Limit of elements in the page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset from previous page. Don't fill if first page.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StringMessageDetailsV1TaskProgressMessagePagedListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-os-permissions": "API Client needs the **Stage > View stage** permission for the operation."
      }
    }
  },
  "components": {
    "schemas": {
      "DeploymentOperationRequest": {
        "type": "object",
        "properties": {
          "operation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DeploymentOperationsType"
              }
            ],
            "description": "Operation to be executed.\nMandatory: Deploy, Undeploy, ApplyConfigs."
          },
          "assetKey": {
            "type": "string",
            "description": "Asset unique identifier.\nMandatory for Apply Configurations and Deployment.",
            "format": "uuid"
          },
          "buildKey": {
            "type": "string",
            "description": "Build unique identifier.\nMandatory for Deployment.",
            "format": "uuid",
            "nullable": true
          },
          "revision": {
            "type": "integer",
            "description": "Revision identifier.\nMandatory for Apply Configurations and Deployment.",
            "format": "int32",
            "nullable": true
          },
          "environmentKey": {
            "type": "string",
            "description": "Environment Identifier.\nMandatory.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Deployment job request data"
      },
      "DeploymentOperationResponse": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Unique identifier of the deployment-operation.",
            "format": "uuid"
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Status"
              }
            ],
            "description": "Deployment-operation status."
          },
          "startedDateTime": {
            "type": "string",
            "description": "When the deployment-operation started.",
            "format": "date-time"
          },
          "finishedDateTime": {
            "type": "string",
            "description": "When the deployment-operation finished.",
            "format": "date-time"
          },
          "deployedBy": {
            "type": "string",
            "description": "Unique identifier of the requesting subject.",
            "nullable": true
          },
          "assetKey": {
            "type": "string",
            "description": "Unique identifier of the asset.",
            "format": "uuid"
          },
          "revisions": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "List of revisions that had the action performed.",
            "nullable": true
          },
          "buildKey": {
            "type": "string",
            "description": "Unique identifier of the asset build.",
            "format": "uuid",
            "nullable": true
          },
          "assetName": {
            "type": "string",
            "description": "Asset name.",
            "nullable": true
          },
          "operation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DeploymentOperationsType"
              }
            ],
            "description": "Executed Operation."
          },
          "portfolioKey": {
            "type": "string",
            "description": "Portfolio Key.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Information about one deployment"
      },
      "DeploymentOperationsType": {
        "enum": [
          "Deploy",
          "Undeploy",
          "ApplyConfigs"
        ],
        "type": "string"
      },
      "Int32NullableDeploymentOperationResponsePagedListResponse": {
        "type": "object",
        "properties": {
          "page": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Int32NullablePageInfo"
              }
            ],
            "description": "Page information.",
            "nullable": true,
            "readOnly": true
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeploymentOperationResponse"
            },
            "description": "List of results.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a response containing a paged set of results."
      },
      "Int32NullablePageInfo": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "description": "Number of results in the current page.",
            "format": "int32"
          },
          "limit": {
            "type": "integer",
            "description": "Limit of results per page.",
            "format": "int32"
          },
          "offset": {
            "type": "integer",
            "description": "Offset of the current page of results.",
            "format": "int32",
            "nullable": true
          },
          "nextPageOffset": {
            "type": "integer",
            "description": "Offset of the next page of results.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Contains response page information."
      },
      "Int32NullablePublishOperationResponsePagedListResponse": {
        "type": "object",
        "properties": {
          "page": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Int32NullablePageInfo"
              }
            ],
            "description": "Page information.",
            "nullable": true,
            "readOnly": true
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublishOperationResponse"
            },
            "description": "List of results.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a response containing a paged set of results."
      },
      "MessageDetailsV1": {
        "type": "object",
        "properties": {
          "stepId": {
            "type": "string",
            "description": "Step unique identifier.",
            "nullable": true
          },
          "assetKey": {
            "type": "string",
            "description": "Asset unique identifier.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
 

# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/outsystems/refs/heads/main/openapi/outsystems-deployments-api-v1-openapi.json