{ "openapi": "3.0.3", "info": { "title": "Portfolio API", "description": "REST endpoints for retrieving information about assets and environments in your organization.\n", "version": "v1" }, "servers": [ { "url": "https://ODC_PORTAL_DOMAIN/api/portfolios/v1", "description": "Replace ODC_PORTAL_DOMAIN with the domain of your organization." }, { "url": "https://{odc-portal-domain}/api/portfolios/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": { "/deployed-assets": { "get": { "tags": [ "deployed-assets" ], "summary": "Retrieves a list of deployed assets.", "description": "Retrieves a list of deployed assets containing updated deployment status per environment (stage).\nDeprecated since 2026-07-08. Use GET /portfolios/v2/deployed-assets instead.\nThis endpoint will be removed on or after 2027-01-08.\n\nThe result only shows assets in environments (stages) for which the API Client has **Stage > View stage** permission.", "operationId": "DeployedAssets_ListAssets", "parameters": [ { "name": "environmentKey", "in": "query", "description": "Environment key on which to filter, comma separated.", "schema": { "type": "string" } }, { "name": "key", "in": "query", "description": "Asset keys on which to filter, comma separated.", "schema": { "type": "string" } }, { "name": "type", "in": "query", "description": "Asset types on which to filter, comma separated. Available values: WebApplication, MobileApplication, Workflow, Agent.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "nameContains", "in": "query", "description": "Filter by matching on the name, case-insensitive.", "schema": { "type": "string" } }, { "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.\nFor nested sorting, the format is element1[key].element2 .\nMultiple orders joined by comma.\nExample: -element1,element2 to sort by element1 descending then by element2 ascending.\nSupported values for first order sorting: deployments (nested).\nFor nested sorting: deploymentDateTime.\nExample: deployments[environmentkey].deploymentDatetime .\nAttention: the sorting only applies to the assets, not to the deployments.\nThe deployments will always be sorted by the DeploymentDatetime, descending.", "schema": { "type": "string" } } ], "responses": { "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } } } }, "422": { "description": "Unprocessable Content", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } } } }, "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeployedAssetPagedListResponse" } } } } }, "deprecated": true, "x-os-permissions": "The result only shows assets in environments (stages) for which the API Client has **Stage > View stage** permission." } }, "/environments": { "get": { "tags": [ "environments" ], "summary": "Retrieves the list of environments (stages).", "description": "Deprecated since 2026-07-08. Use GET /portfolios/v2/environments instead. Note that V2's\nEnvironmentsController does not use the in-memory response caching this V1 endpoint has.\nThis endpoint will be removed on or after 2027-01-08.\n\nThe result only shows environments (stages) for which the API Client has **Stage > View stage** permission.", "operationId": "Environments_ListEnvironments", "responses": { "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } } } }, "400": { "description": "Bad Request", "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" } } } }, "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EnvironmentListResponse" } } } } }, "deprecated": true, "x-os-permissions": "The result only shows environments (stages) for which the API Client has **Stage > View stage** permission." } } }, "components": { "schemas": { "DeployedAsset": { "required": [ "type" ], "type": "object", "properties": { "type": { "type": "string", "description": "The type of asset (WebApplication, MobileApplication, Workflow).", "nullable": true }, "key": { "type": "string", "description": "The asset key.", "format": "uuid" }, "isBuiltIn": { "type": "boolean", "description": "Whether the asset is built-in." }, "deployments": { "type": "array", "items": { "$ref": "#/components/schemas/Deployment" }, "description": "Where the asset is deployed and its details.", "nullable": true } }, "additionalProperties": false, "description": "Deployed asset" }, "DeployedAssetPagedListResponse": { "type": "object", "properties": { "page": { "allOf": [ { "$ref": "#/components/schemas/PageInfoWithTotals" } ], "description": "Page information.", "nullable": true, "readOnly": true }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/DeployedAsset" }, "description": "List of results.", "nullable": true, "readOnly": true } }, "additionalProperties": false, "description": "Represents a response containing a paged set of results." }, "Deployment": { "required": [ "buildKey", "deploymentDateTime", "deploymentKey", "deploymentUserId", "description", "environmentKey", "iconUrl", "name", "revision", "tag", "taggingDateTime", "taggingUserKey", "url" ], "type": "object", "properties": { "environmentKey": { "type": "string", "description": "The environment key in which the asset is deployed.", "format": "uuid" }, "name": { "type": "string", "description": "The asset name.", "nullable": true }, "revision": { "type": "integer", "description": "The asset revision.", "format": "int32" }, "buildKey": { "type": "string", "description": "The asset build key.", "format": "uuid" }, "deploymentKey": { "type": "string", "description": "The deployment key.", "format": "uuid" }, "deploymentDateTime": { "type": "string", "description": "The date at which the deployment occurred.", "format": "date-time" }, "description": { "type": "string", "description": "The description of the asset.", "nullable": true }, "iconUrl": { "type": "string", "description": "The icon of the asset.", "nullable": true }, "deploymentUserId": { "type": "string", "description": "The id of the user that did the deployment.", "nullable": true }, "url": { "type": "string", "description": "The url for the deployment.", "nullable": true }, "tag": { "type": "string", "description": "The tag for this revision of the asset.", "nullable": true }, "taggingUserKey": { "type": "string", "description": "The id of the user that tagged the asset.", "nullable": true }, "taggingDateTime": { "type": "string", "description": "The date at which the asset was tagged.", "format": "date-time", "nullable": true } }, "additionalProperties": false, "description": "Deployment instance" }, "Environment": { "type": "object", "properties": { "key": { "type": "string", "description": "The environment key.", "nullable": true }, "name": { "type": "string", "description": "The environment name.", "nullable": true }, "hostname": { "type": "string", "description": "The built-in environment hostname.", "nullable": true }, "purpose": { "allOf": [ { "$ref": "#/components/schemas/EnvironmentPurpose" } ], "description": "The environment purpose." }, "order": { "type": "integer", "description": "The environment order.", "format": "int32" }, "region": { "type": "string", "description": "The environment region.", "nullable": true }, "hosting": { "type": "string", "description": "The hosting type (oscloud, selfhosted).", "nullable": true }, "isConfigured": { "type": "boolean", "description": "If is selfhosted and configured." }, "isDeployedToCluster": { "type": "boolean", "description": "If is deployed on the cluster." } }, "additionalProperties": false, "description": "Environment" }, "EnvironmentListResponse": { "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/components/schemas/Environment" }, "description": "List of results.", "nullable": true } }, "additionalProperties": false, "description": "Represents a response containing a list of results." }, "EnvironmentPurpose": { "enum": [ "Development", "NonProduction", "Production", "Unknown" ], "type": "string" }, "PageInfoWithTotals": { "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" }, "nextPageOffset": { "type": "integer", "description": "Offset of the next page of results. Null when there is no next page.", "format": "int32", "nullable": true }, "totalResults": { "type": "integer", "description": "Total of results.", "format": "int32" }, "totalPages": { "type": "integer", "description": "Total of result pages.", "format": "int32", "readOnly": true } }, "additionalProperties": false, "description": "Contains response page information including totals." }, "ProblemDetails": { "type": "object", "properties": { "type": { "type": "string", "description": "A URI reference that identifies the problem type.", "nullable": true }, "title": { "type": "string", "description": "A short, human-readable summary of the problem.", "nullable": true }, "status": { "type": "integer", "description": "The HTTP status code applicable to the problem.", "format": "int32", "nullable": true }, "detail": { "type": "string", "description": "A human-readable explanation of the error.", "nullable": true }, "instance": { "type": "string", "description": "A URI that identifies the specific occurrence of the problem.", "nullable": true }, "traceId": { "type": "string", "description": "This field helps OutSystems support to track and investigate specific error occurrences. Providing this identifier when reporting an issue allows for more precise and faster troubleshooting." }, "errorCode": { "type": "string", "description": "This error code serves the purpose to communicate with OutSystems Support and help diagonose errors." } }, "description": "A standardized error response as per RFC 7807 (Problem Details for HTTP APIs)." } }, "securitySchemes": { "bearerAuth": { "type": "http", "description": "Enter your bearer token in the format 'Bearer {token}'", "scheme": "bearer", "bearerFormat": "JWT" } } }, "security": [ { "bearerAuth": [] } ], "tags": [ { "name": "public", "description": "" }, { "name": "deployed-assets" }, { "name": "environments" } ] }