OutSystems ODC Environment Configurations API
REST endpoints for managing environment (stage) configurations in ODC, covering custom domains, IP filters and private gateways.
REST endpoints for managing environment (stage) configurations in ODC, covering custom domains, IP filters and private gateways.
{
"openapi": "3.0.3",
"info": {
"title": "Environment Configurations API",
"description": "REST endpoints for managing environment (stage) configurations in ODC. Covers custom domains, IP filters, and Private Gateways, enabling you to automate the same configurations available in ODC Portal.",
"version": "v1"
},
"servers": [
{
"url": "https://ODC_PORTAL_DOMAIN/api/environment-configurations/v1",
"description": "Replace ODC_PORTAL_DOMAIN with the domain of your organization."
},
{
"url": "https://{odc-portal-domain}/api/environment-configurations/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": {
"/environments/{environmentKey}/domains/{domainKey}": {
"delete": {
"tags": [
"Domains"
],
"summary": "Deletes a domain from an environment (stage).",
"description": "Deletes a domain from an environment (stage).\n\nAPI Client needs the **Configuration management > Manage custom domains** permission for the target environment (stage).",
"operationId": "Domains_Delete",
"parameters": [
{
"name": "environmentKey",
"in": "path",
"description": "The environment's key.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "domainKey",
"in": "path",
"description": "The domain's key.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"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"
}
}
}
},
"204": {
"description": "No Content"
}
},
"x-os-permissions": "API Client needs the **Configuration management > Manage custom domains** permission for the target environment (stage)."
},
"get": {
"tags": [
"Domains"
],
"summary": "Returns the details of a specific domain for the given environment (stage).",
"description": "Returns the details of a specific domain for the given environment (stage).\n\nAPI Client needs the **Configuration management > View configurations** permission for the target environment (stage).",
"operationId": "Domains_Get",
"parameters": [
{
"name": "environmentKey",
"in": "path",
"description": "The environment's key.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "domainKey",
"in": "path",
"description": "The domain's key.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"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"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Domain"
}
}
}
}
},
"x-os-permissions": "API Client needs the **Configuration management > View configurations** permission for the target environment (stage)."
},
"patch": {
"tags": [
"Domains"
],
"summary": "Patches the default app (App Domain) for the specified custom domain.",
"description": "Patches the default app (App Domain) for the specified custom domain.\n\nAPI Client needs the **Configuration management > Manage custom domains** permission for the target environment (stage).",
"operationId": "Domains_Patch",
"parameters": [
{
"name": "environmentKey",
"in": "path",
"description": "The environment's key.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "domainKey",
"in": "path",
"description": "The domain's key.",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"description": "The patch request containing the application key and redirect option.",
"content": {
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/DomainPatchRequest"
}
]
}
},
"application/*+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/DomainPatchRequest"
}
]
}
}
}
},
"responses": {
"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"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DomainPatchResponse"
}
}
}
}
},
"x-os-permissions": "API Client needs the **Configuration management > Manage custom domains** permission for the target environment (stage)."
}
},
"/environments/{environmentKey}/domains": {
"get": {
"tags": [
"Domains"
],
"summary": "Returns a list of domains for a specific environment (stage).",
"description": "Returns a list of domains for a specific environment (stage).\n\nAPI Client needs the **Configuration management > View configurations** permission for the target environment (stage).",
"operationId": "Domains_Get",
"parameters": [
{
"name": "environmentKey",
"in": "path",
"description": "The environment's key.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "limit",
"in": "query",
"description": "Maximum number of results to return. Allowed values: 1 to 100. Default value: 100.",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"name": "offset",
"in": "query",
"description": "Offset of the first result to return. Default value: 0.",
"schema": {
"type": "integer",
"format": "int32"
}
}
],
"responses": {
"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"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DomainPagedListResponse"
}
}
}
}
},
"x-os-permissions": "API Client needs the **Configuration management > View configurations** permission for the target environment (stage)."
},
"post": {
"tags": [
"Domains"
],
"summary": "Creates a new domain for the specified environment (stage). You can provide the domain's hostname and name.",
"description": "Creates a new domain for the specified environment (stage). You can provide the domain's hostname and name.\n\nAPI Client needs the **Configuration management > Manage custom domains** permission for the target environment (stage).",
"operationId": "Domains_Post",
"parameters": [
{
"name": "environmentKey",
"in": "path",
"description": "The environment's key.",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"description": "The domain object with the necessary information",
"content": {
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/DomainRequest"
}
]
}
},
"application/*+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/DomainRequest"
}
]
}
}
}
},
"responses": {
"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"
}
}
}
},
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Domain"
}
}
}
}
},
"x-os-permissions": "API Client needs the **Configuration management > Manage custom domains** permission for the target environment (stage)."
}
},
"/environments/{environmentKey}/default-domain": {
"get": {
"tags": [
"Domains"
],
"summary": "Retrieves the default domain for the given environment (stage).",
"description": "Retrieves the default domain for the given environment (stage).\n\nAPI Client needs the **Configuration management > View configurations** permission for the target environment (stage).",
"operationId": "EnvironmentConfigurations_Get",
"parameters": [
{
"name": "environmentKey",
"in": "path",
"description": "The environment's key.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"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"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DefaultDomainResponse"
}
}
}
}
},
"x-os-permissions": "API Client needs the **Configuration management > View configurations** permission for the target environment (stage)."
},
"patch": {
"tags": [
"Domains"
],
"summary": "Updates the default domain for the given environment (stage).",
"description": "Updates the default domain for the given environment (stage).\n\nAPI Client needs the **Configuration management > Manage custom domains** permission for the target environment (stage).",
"operationId": "EnvironmentConfigurations_Patch",
"parameters": [
{
"name": "environmentKey",
"in": "path",
"description": "The environment's key.",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"description": "The request object containing the new Default Domain.",
"content": {
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/PatchDefaultDomainRequest"
}
]
}
},
"application/*+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/PatchDefaultDomainRequest"
}
]
}
}
}
},
"responses": {
"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"
}
}
}
},
"204": {
"description": "No Content"
}
},
"x-os-permissions": "API Client needs the **Configuration management > Manage custom domains** permission for the target environment (stage)."
}
},
"/environments/{environmentKey}/ip-filter-groups/{ipFilterGroupKey}": {
"delete": {
"tags": [
"IP filters"
],
"summary": "Deletes a specific IP filter group for an environment (stage).",
"description": "Deletes a specific IP filter group for an environment (stage).\n\nAPI Client needs the **Configuration management > Manage IP filters** permission for the target environment (stage).",
"operationId": "IpFilterGroups_Delete",
"parameters": [
{
"name": "environmentKey",
"in": "path",
"description": "The environment's key.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "ipFilterGroupKey",
"in": "path",
"description": "The IP filter group's key.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"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"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"204": {
"description": "No Content"
}
},
"x-os-permissions": "API Client needs the **Configuration management > Manage IP filters** permission for the target environment (stage)."
},
"get": {
"tags": [
"IP filters"
],
"summary": "Returns information about a specific IP filter group for an environment (stage).",
"description": "Returns information about a specific IP filter group for an environment (stage).\n\nAPI Client needs the **Configuration management > View configurations** permission for the target environment (stage).",
"operationId": "IpFilterGroups_Get",
"parameters": [
{
"name": "environmentKey",
"in": "path",
"description": "The environment's key.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "ipFilterGroupKey",
"in": "path",
"description": "The IP filter group's key.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"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"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/IpFilterGroup"
}
}
}
}
},
"x-os-permissions": "API Client needs the **Configuration management > View configurations** permission for the target environment (stage)."
},
"patch": {
"tags": [
"IP filters"
],
"summary": "Updates an IP filter group for an environment (stage).",
"description": "Updates an IP filter group for an environment (stage).\n\nAPI Client needs the **Configuration management > Manage IP filters** permission for the target environment (stage).",
"operationId": "IpFilterGroups_Patch",
"parameters": [
{
"name": "environmentKey",
"in": "path",
"description": "The environment's key.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "ipFilterGroupKey",
"in": "path",
"description": "The IP filter group's key.",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"description": "The details of the IP filter group being updated.",
"content": {
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/PatchIpFilterGroup"
}
]
}
},
"application/*+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/PatchIpFilterGroup"
}
]
}
}
}
},
"responses": {
"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"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"204": {
"description": "No Content"
}
},
"x-os-permissions": "API Client needs the **Configuration management > Manage IP filters** permission for the target environment (stage)."
}
},
"/environments/{environmentKey}/ip-filter-groups": {
"get": {
"tags": [
"IP filters"
],
"summary": "Returns the list of IP filter groups for an environment (stage).",
"description": "Returns the list of IP filter groups for an environment (stage).\n\nAPI Client needs the **Configuration management > View configurations** permission for the target environment (stage).",
"operationId": "IpFilterGroups_List",
"parameters": [
{
"name": "environmentKey",
"in": "path",
"description": "The environment's key.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "appKeys",
"in": "query",
"description": "Comma-separated list of app keys to filter the results.",
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
}
],
"responses": {
"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"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/IpFilterGroups"
}
}
}
}
},
"x-os-permissions": "API Client needs the **Configuration management > View configurations** permission for the target environment (stage)."
},
"post": {
"tags": [
"IP filters"
],
"summary": "Creates a new IP filter group in an environment (stage).",
"description": "Creates a new IP filter group in an environment (stage).\n\nAPI Client needs the **Configuration management > Manage IP filters** permission for the target environment (stage).",
"operationId": "IpFilterGroups_Post",
"parameters": [
{
"name": "environmentKey",
"in": "path",
"description": "The environment's key.",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"description": "The details of the new IP filter group.",
"content": {
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/BaseIpFilterGroup"
}
]
}
},
"application/*+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/BaseIpFilterGroup"
}
]
}
}
}
},
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schem
# --- truncated at 32 KB (58 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/outsystems/refs/heads/main/openapi/outsystems-environment-configurations-api-v1-openapi.json