OutSystems Domains API
Manage custom domains for environments.
Manage custom domains for environments.
openapi: 3.2.0
info:
title: Environment Configurations Domains 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
security:
- bearerAuth: []
tags:
- name: Domains
description: Manage custom domains for environments.
paths:
/environments/{environmentKey}/domains/{domainKey}:
delete:
tags:
- Domains
summary: Deletes a domain from an environment (stage).
description: 'Deletes a domain from an environment (stage).
API 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).
API 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.
API 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).
API 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.
API 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).
API 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).
API 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).
components:
schemas:
DomainCertificateStatus:
enum:
- Creating
- PendingValidation
- Issued
- Failed
- Deleting
- Deleted
- Expired
- Active
type: string
DomainRequest:
type: object
properties:
hostname:
type:
- string
- 'null'
description: The hostname for the new domain.
name:
type:
- string
- 'null'
description: The name for the new domain.
additionalProperties: false
DomainPatchRequest:
type: object
properties:
defaultApplicationKey:
type:
- string
- 'null'
description: The application key to set as the default for the domain.
format: uuid
redirectOption:
allOf:
- $ref: '#/components/schemas/RedirectOption'
description: 'The type of redirect to use, enum of [Permanent, Temporary, None]
Default is Permanent (301) redirect.'
additionalProperties: false
DomainPatchResponse:
type: object
properties:
domain:
allOf:
- $ref: '#/components/schemas/Domain'
description: The updated domain information after the patch operation
additionalProperties: false
DomainCertificate:
type: object
properties:
status:
allOf:
- $ref: '#/components/schemas/DomainCertificateStatus'
description: Current status of the certificate
cNameKey:
type:
- string
- 'null'
description: Key correlating CName with certificate
cNameValue:
type:
- string
- 'null'
description: CName correlated to certificate
renewalEligibility:
type: boolean
description: If it is renewable
statusErrorCode:
type:
- string
- 'null'
description: Associated error value for when the status is in Error
statusErrorMessage:
type:
- string
- 'null'
description: Associated error message for when the status is in Error
additionalProperties: false
RedirectOption:
enum:
- Permanent
- Temporary
- None
type: string
description: The type of redirect to use for domains.
PatchDefaultDomainRequest:
type: object
properties:
defaultDomain:
type:
- string
- 'null'
description: The default domain to set for the environment (stage).
additionalProperties: false
DefaultDomainResponse:
type: object
properties:
defaultDomain:
type:
- string
- 'null'
description: The default domain for the given environment (stage).
additionalProperties: false
ProblemDetails:
type: object
properties:
type:
type:
- string
- 'null'
description: A URI reference that identifies the problem type.
title:
type:
- string
- 'null'
description: A short, human-readable summary of the problem.
status:
type:
- integer
- 'null'
description: The HTTP status code applicable to the problem.
format: int32
detail:
type:
- string
- 'null'
description: A human-readable explanation of the error.
instance:
type:
- string
- 'null'
description: A URI that identifies the specific occurrence of the problem.
traceId:
type: string
description: This field helps OutSystems support 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 diagnose errors.
description: A standardized error response as per RFC 7807 (Problem Details for HTTP APIs).
Domain:
type: object
properties:
id:
type:
- string
- 'null'
description: The domain's unique identifier.
name:
type:
- string
- 'null'
description: The domain's name.
hostname:
type:
- string
- 'null'
description: The hostname used to access the applications that are deployed in the environment.
cNameValue:
type:
- string
- 'null'
description: The CName related to the domain.
builtIn:
type: boolean
description: Indicates if the domain is provided by OutSystems.
certificate:
allOf:
- $ref: '#/components/schemas/DomainCertificate'
description: The associated certificate for the domain.
isDefault:
type: boolean
description: Indicates if this domain is set as the default one for applications in the environment (stage).
defaultApplicationKey:
type:
- string
- 'null'
description: If this domain is set as the default one for this application key in that environment
format: uuid
redirectOption:
allOf:
- $ref: '#/components/schemas/RedirectOption'
description: 'The type of redirect to use, enum of [Permanent, Temporary, None]
Default is Permanent (301) redirect.'
additionalProperties: false
DomainPagedListResponse:
type: object
properties:
page:
allOf:
- $ref: '#/components/schemas/PageInfoWithTotals'
description: Page information.
readOnly: true
results:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Domain'
description: List of results.
readOnly: true
additionalProperties: false
description: Represents a response containing a paged set of results.
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.
format: int32
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.
securitySchemes:
bearerAuth:
type: http
description: Enter your bearer token in the format 'Bearer {token}'
scheme: bearer
bearerFormat: JWT