OutSystems ODC Asset Repository API

REST endpoints for retrieving information about assets and asset revisions held in the OutSystems Developer Cloud asset repository.

OpenAPI Specification

outsystems-asset-repository-api-v1-openapi.json Raw ↑
{
  "openapi": "3.0.3",
  "info": {
    "title": "Asset Repository API",
    "description": "REST endpoints for retrieving information about assets revisions. ",
    "version": "v1"
  },
  "servers": [
    {
      "url": "https://ODC_PORTAL_DOMAIN/api/asset-repository/v1",
      "description": "Replace ODC_PORTAL_DOMAIN with the domain of your organization."
    },
    {
      "url": "https://{odc-portal-domain}/api/asset-repository/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": {
    "/assets": {
      "post": {
        "tags": [],
        "summary": "Creates a new revision of an asset.",
        "description": "If the asset does not exist, it creates the asset and its first revision.\nThe new revision can be created from a source file (OML/XIF) or, for new assets, created empty or cloned from a template.\nWhen providing the source file, you can pass it as a fileUri or send the binary directly using the application/octet-stream or multipart/form-data content types.\n\nTo create an asset, API Client needs the **Asset management > Create** permission.\n\nTo create a new revision for an existing asset, API Client needs the **Asset management > Change** permission.",
        "operationId": "AssetRepository_CreateAssetRevision",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetVersionCreationRequest"
              }
            },
            "application/octet-stream": {
              "schema": {
                "format": "binary"
              }
            },
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "creationRequest": {
                    "$ref": "#/components/schemas/AssetVersionCreationRequest"
                  },
                  "assetFile": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "creationRequest": {
                  "contentType": "application/json"
                },
                "assetFile": {
                  "contentType": "application/octet-stream"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationVersion"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-os-permissions": "To create an asset, API Client needs the **Asset management > Create** permission.\n\nTo create a new revision for an existing asset, API Client needs the **Asset management > Change** permission."
      },
      "get": {
        "tags": [],
        "summary": "Lists all assets.",
        "description": "Returns a list of the latest revision for all assets that match the specified filters.\n\n",
        "operationId": "AssetRepository_ListAssets",
        "parameters": [
          {
            "name": "nameContains",
            "in": "query",
            "description": "Filters assets by name.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "nameOrDescriptionContains",
            "in": "query",
            "description": "Filters assets by name or description.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assetTypes",
            "in": "query",
            "description": "Filter by one or more asset types, recognized values are [WebApplication, MobileApplication, LowCodeLibrary, ExtensionLibrary, ExternalConnection, ExternalLibrary, Workflow, WidgetLibrary, AIModelConnection, SearchServiceConnection, Agent, MCPConnection, A2AConnection, KnowledgeBase].",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "assetKeys",
            "in": "query",
            "description": "Filter by one or more asset keys.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "portfolioKeys",
            "in": "query",
            "description": "Filter by one or more portfolio keys.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "embed",
            "in": "query",
            "description": "Embedded resources to return with the asset revision. Recognized values are [releaseNote, icon, sourceCode, signature, metadata].",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "metadata.urlPathContains",
            "in": "query",
            "description": "Filters assets by url path.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "metadata.templateType",
            "in": "query",
            "description": "Filter assets that are templates of a specific template type.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/TemplateType"
                }
              ]
            }
          },
          {
            "name": "metadata.isDeployable",
            "in": "query",
            "description": "Filter assets that can be deployed to environments (e.g. exclude libraries and templates).",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "metadata.isBuiltInAsset",
            "in": "query",
            "description": "Filter asset based on if they are builtin type.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "isExternal",
            "in": "query",
            "description": "Filter asset based on if it is external or not.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "permissionFilter",
            "in": "query",
            "description": "Filter by a specific permission type.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/PermissionType"
                }
              ]
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Used for sorting the list. Ascending by default. Prepend a hyphen, \"-\", to get a descending sort. Allowed: name, createdAt.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of results returned.",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32",
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset of the first result returned.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetRevisionV1PagedListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "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"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/assets/{assetKey}": {
      "delete": {
        "tags": [],
        "summary": "Deletes an asset.",
        "description": "Deleting an asset is an irreversible action. When doing so, an internal event is triggered to remove it from all stages where it's published and to also delete all associated runtime data. Built-in assets are protected and cannot be deleted.\n\nAPI Client needs the **Asset management > Delete** permission.",
        "operationId": "AssetRepository_DeleteAsset",
        "parameters": [
          {
            "name": "assetKey",
            "in": "path",
            "description": "The asset's key.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-os-permissions": "API Client needs the **Asset management > Delete** permission."
      },
      "get": {
        "tags": [],
        "summary": "Gets the latest revision of a specific asset.",
        "description": "Returns the latest revision of a specific asset.\n\n",
        "operationId": "AssetRepository_GetAsset",
        "parameters": [
          {
            "name": "assetKey",
            "in": "path",
            "description": "The asset's key.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "embed",
            "in": "query",
            "description": "Embedded resources to return with the asset revision. Recognized values are [releaseNote, icon, sourceCode, signature, metadata].",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetRevisionV1"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "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"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/assets/{assetKey}/highest-tag-revision": {
      "get": {
        "tags": [],
        "summary": "Gets the highest-tagged revision of an asset.",
        "description": "Returns the highest-tagged revision of the requested asset.\n\n",
        "operationId": "AssetRepository_GetApplicationHighestTagRevision",
        "parameters": [
          {
            "name": "assetKey",
            "in": "path",
            "description": "The asset's key.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "embed",
            "in": "query",
            "description": "Embedded resources to return with the asset revision. Recognized values are [releaseNote, icon, sourceCode, signature, metadata].",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetRevisionV1"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "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"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/assets/{assetKey}/latest-revision": {
      "get": {
        "tags": [],
        "summary": "Gets the latest revision of an asset.",
        "description": "Returns the latest revision of the requested asset.\n\n",
        "operationId": "AssetRepository_GetAssetLatestRevision",
        "parameters": [
          {
            "name": "assetKey",
            "in": "path",
            "description": "The asset's key.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "embed",
            "in": "query",
            "description": "Embedded resources to return with the asset revision. Recognized values are [releaseNote, icon, sourceCode, signature, metadata].",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetRevisionV1"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "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"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/assets/{assetKey}/revisions/{revisionNumber}": {
      "get": {
        "tags": [],
        "summary": "Gets a specific revision of an asset.",
        "description": "Returns the requested asset revision.\n\n",
        "operationId": "AssetRepository_GetAssetRevision",
        "parameters": [
          {
            "name": "assetKey",
            "in": "path",
            "description": "The asset's key.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "revisionNumber",
            "in": "path",
            "description": "The revision number.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "embed",
            "in": "query",
            "description": "Embedded resources to return with the asset revision. Recognized values are [releaseNote, icon, sourceCode, signature, metadata].",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetRevisionV1"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "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"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [],
        "summary": "Sets the version tag and/or labels for an existing revision.",
        "description": "Setting the tag to null clears the existing revision tag.\n\nAPI Client needs the **Asset management > Change** or **Release management > Release** permission.",
        "operationId": "AssetRepository_PatchVersion",
        "parameters": [
          {
            "name": "assetKey",
            "in": "path",
            "description": "The asset's key.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "revisionNumber",
            "in": "path",
            "description": "The revision number.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The version tag and labels to apply to the revision.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AssetVersionPatchRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AssetVersionPatchRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "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 **Asset management > Change** or **Release management > Release** permission."
      }
    },
    "/assets/{assetKey}/revisions/{revisionNumber}/icon": {
      "get": {
        "tags": [],
        "summary": "Gets the icon for a specific asset revision.",
        "description": "Returns the icon for the specific asset revision\n\n",
        "operationId": "AssetRepository_GetAssetRevisionIcon",
        "parameters": [
          {
            "name": "assetKey",
            "in": "path",
            "description": "The asset's key.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "revisionNumber",
            "in": "path",
            "description": "The revision number.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetIcon"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "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"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/assets/{assetKey}/revisions/{revisionNumber}/metadata": {
      "get": {
        "tags": [],
        "summary": "Gets the metadata for a specific asset revision.",
        "description": "Returns the metadata for the specific asset revision\n\n",
        "operationId": "AssetRepository_GetAssetRevisionMetadata",
        "parameters": [
          {
            "name": "assetKey",
            "in": "path",
            "description": "The asset's key.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "revisionNumber",
            "in": "path",
            "description": "The revision number.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetMetadata"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "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"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/assets/{assetKey}/revisions/{rev

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