QuantCDN Environments API
Application environment management and configuration
Documentation
Documentation
https://docs.quantcdn.io/
GettingStarted
https://docs.quantcdn.io/api/get-started-content/
Application environment management and configuration
openapi: 3.0.0
info:
description: Unified API for QuantCDN Admin and QuantCloud Platform services
title: QuantCDN AI Agents Environments API
version: 4.15.8
servers:
- description: QuantCDN Public Cloud
url: https://dashboard.quantcdn.io
- description: QuantGov Cloud
url: https://dash.quantgov.cloud
security:
- BearerAuth: []
tags:
- description: Application environment management and configuration
name: Environments
paths:
/api/v3/organizations/{organisation}/applications/{application}/environments:
get:
operationId: listEnvironments
parameters:
- description: The organisation ID
example: test-org
explode: false
in: path
name: organisation
required: true
schema:
type: string
style: simple
- description: The application ID
example: test-app
explode: false
in: path
name: application
required: true
schema:
type: string
style: simple
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/EnvironmentSummary'
type: array
description: List of environments with summary information including deployment status
'404':
description: The organisation or application not found
summary: Get all environments for an application
tags:
- Environments
post:
operationId: createEnvironment
parameters:
- description: The organisation ID
example: test-org
explode: false
in: path
name: organisation
required: true
schema:
type: string
style: simple
- description: The application ID
example: test-app
explode: false
in: path
name: application
required: true
schema:
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/createEnvironment_request'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/EnvironmentResponse'
description: The environment created
'400':
description: The environment data is invalid
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/createEnvironment_403_response'
description: Environment limit reached - application has reached the maximum number of allowed environments
summary: Create a new environment
tags:
- Environments
/api/v3/organizations/{organisation}/applications/{application}/environments/{environment}:
delete:
operationId: deleteEnvironment
parameters:
- description: The organisation ID
example: test-org
explode: false
in: path
name: organisation
required: true
schema:
type: string
style: simple
- description: The application ID
example: test-app
explode: false
in: path
name: application
required: true
schema:
type: string
style: simple
- description: The environment ID
example: test-env
explode: false
in: path
name: environment
required: true
schema:
type: string
style: simple
responses:
'204':
description: The environment deleted
'404':
description: The environment not found
summary: Delete an environment
tags:
- Environments
get:
operationId: getEnvironment
parameters:
- description: The organisation ID
example: test-org
explode: false
in: path
name: organisation
required: true
schema:
type: string
style: simple
- description: The application ID
example: test-app
explode: false
in: path
name: application
required: true
schema:
type: string
style: simple
- description: The environment ID
example: test-env
explode: false
in: path
name: environment
required: true
schema:
type: string
style: simple
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/EnvironmentResponse'
description: The environment with runtime details
'404':
description: The environment not found
summary: Get a single environment
tags:
- Environments
put:
description: Replaces the entire task definition for the environment based on the provided multi-container compose definition. This will create a new task definition revision and update the ECS service, triggering a redeployment. Optionally accepts minCapacity and maxCapacity at the root level for convenience.
operationId: updateEnvironment
parameters:
- description: The organisation ID
explode: false
in: path
name: organisation
required: true
schema:
type: string
style: simple
- description: The application ID
explode: false
in: path
name: application
required: true
schema:
type: string
style: simple
- description: The environment ID
explode: false
in: path
name: environment
required: true
schema:
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/updateEnvironment_request'
required: true
responses:
'202':
description: Request accepted, compose definition update is processing.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/patchEnvironmentCompose_400_response'
description: Invalid compose definition or validation failed.
'404':
description: Application or environment not found
summary: Update Environment Compose Definition
tags:
- Environments
/api/v3/organizations/{organisation}/applications/{application}/environments/{environment}/state:
put:
operationId: updateEnvironmentState
parameters:
- description: The organisation ID
example: test-org
explode: false
in: path
name: organisation
required: true
schema:
type: string
style: simple
- description: The application ID
example: test-app
explode: false
in: path
name: application
required: true
schema:
type: string
style: simple
- description: The environment ID
example: test-env
explode: false
in: path
name: environment
required: true
schema:
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/updateEnvironmentState_request'
required: true
responses:
'204':
description: The environment state updated
'400':
description: The environment data is invalid
summary: Update the state of an environment
tags:
- Environments
/api/v3/organizations/{organisation}/applications/{application}/environments/{environment}/logs:
get:
description: Retrieves logs from CloudWatch for the specified environment with optional filtering by time range, container, and pattern matching. Supports pagination via nextToken.
operationId: getEnvironmentLogs
parameters:
- description: The organisation ID
example: test-org
explode: false
in: path
name: organisation
required: true
schema:
type: string
style: simple
- description: The application ID
example: test-app
explode: false
in: path
name: application
required: true
schema:
type: string
style: simple
- description: The environment ID
example: test-env
explode: false
in: path
name: environment
required: true
schema:
type: string
style: simple
- description: Start time for log retrieval (ISO 8601 format or Unix timestamp)
explode: true
in: query
name: startTime
required: false
schema:
type: string
style: form
- description: End time for log retrieval (ISO 8601 format or Unix timestamp)
explode: true
in: query
name: endTime
required: false
schema:
type: string
style: form
- description: Filter logs by specific container name
explode: true
in: query
name: containerName
required: false
schema:
type: string
style: form
- description: CloudWatch Logs filter pattern for searching log content
explode: true
in: query
name: filterPattern
required: false
schema:
type: string
style: form
- description: Maximum number of log entries to return per page
explode: true
in: query
name: limit
required: false
schema:
maximum: 10000
minimum: 1
type: integer
style: form
- description: Pagination token from previous response for retrieving next page of results
explode: true
in: query
name: nextToken
required: false
schema:
type: string
style: form
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/getEnvironmentLogs_200_response'
description: The logs
'404':
description: The environment not found
'422':
description: Validation error
summary: Get the logs for an environment
tags:
- Environments
/api/v3/organizations/{organisation}/applications/{application}/environments/{environment}/metrics:
get:
description: Retrieves CloudWatch metrics for the specified environment with optional filtering by time range, container, and metric configuration.
operationId: getEnvironmentMetrics
parameters:
- description: The organisation ID
example: test-org
explode: false
in: path
name: organisation
required: true
schema:
type: string
style: simple
- description: The application ID
example: test-app
explode: false
in: path
name: application
required: true
schema:
type: string
style: simple
- description: The environment ID
example: test-env
explode: false
in: path
name: environment
required: true
schema:
type: string
style: simple
- description: Start time for metrics retrieval (Unix timestamp in milliseconds)
explode: true
in: query
name: startTime
required: false
schema:
type: integer
style: form
- description: End time for metrics retrieval (Unix timestamp in milliseconds)
explode: true
in: query
name: endTime
required: false
schema:
type: integer
style: form
- description: Period in seconds for metric aggregation (e.g., 60 for 1 minute, 300 for 5 minutes)
explode: true
in: query
name: period
required: false
schema:
type: integer
style: form
- description: Comma-separated list of CloudWatch statistics (e.g., Average, Maximum, Minimum, Sum, SampleCount)
explode: true
in: query
name: statistics
required: false
schema:
type: string
style: form
- description: Filter metrics by specific container name
explode: true
in: query
name: containerName
required: false
schema:
type: string
style: form
responses:
'200':
content:
application/json:
schema:
description: CloudWatch metrics data
type: object
description: The metrics
'404':
description: The environment not found
'422':
description: Validation error
summary: Get the metrics for an environment
tags:
- Environments
/api/v3/organizations/{organisation}/applications/{application}/environments/{environment}/sync/{type}:
get:
operationId: listSyncOperations
parameters:
- description: The organisation ID
example: test-org
explode: false
in: path
name: organisation
required: true
schema:
type: string
style: simple
- description: The application ID
example: test-app
explode: false
in: path
name: application
required: true
schema:
type: string
style: simple
- description: The environment ID
example: test-env
explode: false
in: path
name: environment
required: true
schema:
type: string
style: simple
- description: The sync type
explode: false
in: path
name: type
required: true
schema:
enum:
- database
- filesystem
type: string
style: simple
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/SyncOperation'
type: array
description: The sync operations
summary: List the sync operations for an environment
tags:
- Environments
post:
operationId: syncToEnvironment
parameters:
- description: The organisation ID
example: test-org
explode: false
in: path
name: organisation
required: true
schema:
type: string
style: simple
- description: The application ID
example: test-app
explode: false
in: path
name: application
required: true
schema:
type: string
style: simple
- description: The environment ID
example: test-env
explode: false
in: path
name: environment
required: true
schema:
type: string
style: simple
- description: The sync type
explode: false
in: path
name: type
required: true
schema:
enum:
- database
- filesystem
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/syncToEnvironment_request'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SyncOperation'
description: The sync operation details
summary: Perform a sync operation from a source environment to the current environment
tags:
- Environments
components:
schemas:
Container_environment_inner:
example:
name: name
value: value
properties:
name:
description: Environment variable name
type: string
value:
description: Environment variable value
type: string
required:
- name
- value
type: object
Container_healthCheck:
description: Container health check configuration
example:
retries: 7
startPeriod: 279
interval: 171
command:
- command
- command
timeout: 15
nullable: true
properties:
command:
description: The command to run to determine if the container is healthy
items:
type: string
type: array
interval:
default: 30
description: Time period (seconds) between health checks
maximum: 300
minimum: 5
type: integer
timeout:
default: 5
description: Time period (seconds) to wait for a health check to return
maximum: 60
minimum: 2
type: integer
retries:
default: 3
description: Number of times to retry a failed health check
maximum: 10
minimum: 1
type: integer
startPeriod:
description: Grace period (seconds) to ignore unhealthy checks after container starts
maximum: 300
minimum: 0
nullable: true
type: integer
type: object
EnvironmentSummary:
description: Environment summary returned in list responses
example:
deploymentStatus: COMPLETED
envName: production
desiredCount: 2
runningCount: 2
maxCapacity: 5
minCapacity: 1
status: ACTIVE
properties:
envName:
description: Environment name
example: production
type: string
status:
description: Environment status
example: ACTIVE
type: string
deploymentStatus:
description: Current deployment status
enum:
- COMPLETED
- IN_PROGRESS
- FAILED
example: COMPLETED
type: string
runningCount:
description: Number of running tasks
example: 2
type: integer
desiredCount:
description: Desired number of tasks
example: 2
type: integer
minCapacity:
description: Minimum capacity for autoscaling
example: 1
type: integer
maxCapacity:
description: Maximum capacity for autoscaling
example: 5
type: integer
type: object
Container_imageReference:
example:
identifier: identifier
type: internal
properties:
type:
description: Specifies whether the image is internal (ECR) or external (e.g., Docker Hub)
enum:
- internal
- external
type: string
identifier:
description: The image identifier. For 'internal' type, this is the image tag. For 'external' type, this is the full image name.
type: string
required:
- identifier
- type
type: object
Container_mountPoints_inner:
example:
readOnly: false
containerPath: containerPath
sourceVolume: sourceVolume
properties:
sourceVolume:
description: The name of the logical volume
type: string
containerPath:
description: The path inside the container where the volume is mounted
type: string
readOnly:
default: false
type: boolean
required:
- containerPath
- sourceVolume
type: object
getEnvironmentLogs_200_response_logEvents_inner:
example:
message: message
timestamp: 0
properties:
timestamp:
description: Unix timestamp in milliseconds
type: integer
message:
description: Log message content
type: string
type: object
EnvironmentResponse:
description: Environment response schema with runtime details
example:
cron:
- targetContainerName: targetContainerName
scheduleExpression: scheduleExpression
isEnabled: true
name: name
description: description
command:
- command
- command
- targetContainerName: targetContainerName
scheduleExpression: scheduleExpression
isEnabled: true
name: name
description: description
command:
- command
- command
deploymentFailureReason: deploymentFailureReason
subnet: '{}'
publicIpAddress: 54.123.45.67
desiredCount: 2
vpc: '{}'
volumes:
- createdAt: createdAt
accessPointArn: accessPointArn
volumeName: volumeName
accessPointId: accessPointId
volumeId: volumeId
description: description
rootDirectory: rootDirectory
environmentEfsId: environmentEfsId
- createdAt: createdAt
accessPointArn: accessPointArn
volumeName: volumeName
accessPointId: accessPointId
volumeId: volumeId
description: description
rootDirectory: rootDirectory
environmentEfsId: environmentEfsId
maxCapacity: 5
securityGroup: '{}'
containerNames:
- containerNames
- containerNames
createdAt: 2000-01-23 04:56:07+00:00
deploymentStatus: COMPLETED
envName: production
service: '{}'
loadBalancer: '{}'
runningCount: 2
deploymentFailureType: deploymentFailureType
minCapacity: 1
albRouting: '{}'
taskDefinition: '{}'
status: ACTIVE
updatedAt: 2000-01-23 04:56:07+00:00
properties:
envName:
description: Environment name
example: production
type: string
status:
description: Environment status
example: ACTIVE
readOnly: true
type: string
runningCount:
description: Number of running tasks
example: 2
readOnly: true
type: integer
desiredCount:
description: Desired number of tasks
example: 2
readOnly: true
type: integer
minCapacity:
description: Minimum capacity for autoscaling
example: 1
type: integer
maxCapacity:
description: Maximum capacity for autoscaling
example: 5
type: integer
publicIpAddress:
description: Public IP address for SSH access
example: 54.123.45.67
nullable: true
readOnly: true
type: string
deploymentStatus:
description: Current deployment status
enum:
- COMPLETED
- IN_PROGRESS
- FAILED
example: COMPLETED
readOnly: true
type: string
deploymentFailureType:
description: Type of deployment failure
nullable: true
readOnly: true
type: string
deploymentFailureReason:
description: Reason for deployment failure
nullable: true
readOnly: true
type: string
taskDefinition:
description: ECS task definition details
readOnly: true
type: object
service:
description: ECS service details
readOnly: true
type: object
loadBalancer:
description: Load balancer configuration
readOnly: true
type: object
securityGroup:
description: Security group configuration
readOnly: true
type: object
subnet:
description: Subnet configuration
readOnly: true
type: object
vpc:
description: VPC configuration
readOnly: true
type: object
containerNames:
description: Container name list
items:
type: string
readOnly: true
type: array
volumes:
description: Persistent storage volumes
items:
$ref: '#/components/schemas/Volume'
readOnly: true
type: array
cron:
description: Scheduled cron jobs
items:
$ref: '#/components/schemas/Cron'
readOnly: true
type: array
albRouting:
description: ALB routing configuration
readOnly: true
type: object
createdAt:
description: Creation timestamp
format: date-time
readOnly: true
type: string
updatedAt:
description: Last update timestamp
format: date-time
readOnly: true
type: string
required:
- envName
type: object
patchEnvironmentCompose_400_response:
example:
message: message
errors: '{}'
properties:
message:
type: string
errors:
type: object
type: object
Cron:
example:
targetContainerName: targetContainerName
scheduleExpression: scheduleExpression
isEnabled: true
name: name
description: description
command:
- command
- command
properties:
name:
type: string
description:
nullable: true
type: string
scheduleExpression:
type: string
command:
items:
type: string
type: array
targetContainerName:
nullable: true
type: string
isEnabled:
type: boolean
type: object
createEnvironment_request_environment_inner:
properties:
name:
description: Variable name
type: string
value:
description: Variable value
type: string
type: object
Compose:
example:
spotConfiguration:
strategy: spot-only
taskMemory: 2
maxCapacity: 7
containers:
- originProtectionConfig:
ipAllow:
- ipAllow
- ipAllow
enabled: true
memory: 6
dependsOn:
- condition: START
containerName: containerName
- condition: START
containerName: containerName
workingDirectory: workingDirectory
exposedPorts:
- 5
- 5
cpu: 0
imageReference:
identifier: identifier
type: internal
secrets:
- name: name
valueFrom: valueFrom
- name: name
valueFrom: valueFrom
memoryReservation: 1
command:
- command
- command
environment:
- name: name
value: value
- name: name
value: value
readonlyRootFilesystem: false
originProtection: false
healthCheck:
retries: 7
startPeriod: 279
interval: 171
command:
- command
- command
timeout: 15
name: name
mountPoints:
- readOnly: false
containerPath: containerPath
sourceVolume: sourceVolume
- readOnly: false
containerPath: containerPath
sourceVolume: sourceVolume
entryPoint:
- entryPoint
- entryPoint
user: user
essential: true
- originProtectionConfig:
ipAllow:
- ipAllow
- ipAllow
enabled: true
memory: 6
dependsOn:
- condition: START
containerName: containerName
- condition: START
containerName: containerName
workingDirectory: workingDirectory
exposedPorts:
- 5
- 5
cpu: 0
imageReference:
identifier: identifier
type: internal
secrets:
- name: name
valueFrom: valueFrom
- name: name
valueFrom: valueFrom
memoryReservation: 1
command:
- command
- command
environment:
- name: name
value: value
- name: name
value: value
readonlyRootFilesystem: false
originProtection: false
healthCheck:
retries: 7
startPeriod: 279
interval: 171
command:
- command
- command
timeout: 15
name: name
mountPoints:
- readOnly: false
containerPath: containerPath
sourceVolume: sourceVolume
- readOnly: false
containerPath: containerPath
sourceVolume: sourceVolume
entryPoint:
- entryPoint
- entryPoint
user: user
essential: true
minCapacity: 4
taskCpu: 3
enableCrossAppNetworking: false
architecture: architecture
enableCrossEnvNetworking: false
properties:
containers:
items:
$ref: '#/components/schemas/Container'
type: array
architecture:
description: CPU architecture (X86_64 or ARM64)
nullable: false
type: string
taskCpu:
description: Task-level CPU units (e.g., 256, 512, 1024)
nullable: false
type: integer
taskMemory:
description: Task-level memory in MB
nullable: false
type: integer
minCapacity:
description: Minimum number of instances
nullable: false
type: integer
maxCapacity:
description: Maximum number of instances
nullable: false
type: integer
spotConfiguration:
$ref: '#/components/schemas/SpotConfiguration'
enableCrossEnvNetworking:
default: false
description: 'Optional. Enable cross-environment networking within the same application. When false (default): Uses shared security group for complete isolation (most secure). When true: Uses app-specific security group to enable communication between environments of the same application (e.g., staging can connect to production database). Note: If enableCrossAppNetworking is true, this setting is overridden.'
nullable: true
type: boolean
enableCrossAppNetworking:
default: false
description: 'Optional. Enable cross-application networking within the same organization. When false (default): Uses shared/app-specific security group based on enableCrossEnvNetworking. When true: Uses org-specific security group to enable container-to-container communication with ALL applications in the same organization via service discovery (microservices architecture). This setting takes priority over enableCrossEnvNetworking.'
nullable: true
type: boolean
type: object
Volume:
example:
createdAt: createdAt
accessPointArn: accessPointArn
volumeName: volumeName
accessPointId: accessPointId
volumeId: volumeId
description: description
rootDirectory: rootDirectory
environmentEfsId: environmentEfsId
properties:
volumeId:
type: string
volumeName:
type: string
description:
type: string
environmentEfsId:
type: string
createdAt:
type: string
rootDirectory:
type: string
accessPointId:
type: string
accessPointArn:
type: string
type: object
createEnvironment_403_response:
example:
message: Environment limit reached
error: Application my-app has reached the maximum number of allowed environments (5/5). Please contact support to increase your limit.
properties:
message:
example: Environment limit reached
type: string
error:
example: Application my-app has reached the maximum number of allowe
# --- truncated at 32 KB (42 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/quantcdn/refs/heads/main/openapi/quantcdn-environments-api-openapi.yml