Operations 3
Documentation
Documentation
https://docs.quantcdn.io/
GettingStarted
https://docs.quantcdn.io/api/get-started-content/
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/quantcdn-compose-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
description: Unified API for QuantCDN Admin and QuantCloud Platform services
title: QuantCDN AI Agents Compose 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: Docker compose configuration management
name: Compose
paths:
/api/v3/organizations/{organisation}/applications/{application}/environments/{environment}/compose:
get:
operationId: getEnvironmentCompose
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/Compose'
description: The compose file
'404':
description: The compose file not found
summary: Get the compose file for an environment
tags:
- Compose
patch:
description: Partially updates top-level fields of the environment's compose definition, such as architecture, task-level CPU/Memory, or min/max scaling capacity. Only fields included in the request body are modified. The 'containers' array, if provided, REPLACES the existing containers array; if omitted, the existing containers are NOT modified by this PATCH operation. (For modifying individual containers, use PATCH /containers/{containerName}). This triggers a validation, registers a new task definition, and updates the service.
operationId: patchEnvironmentCompose
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/patchEnvironmentCompose_request'
description: Partial compose definition updates. All fields are optional.
required: true
responses:
'202':
content:
application/json:
schema:
$ref: '#/components/schemas/patchEnvironmentCompose_202_response'
description: Request accepted, compose definition partial update is processing. Returns the full updated compose definition.
'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: Partially Update Environment Compose Definition
tags:
- Compose
/api/v3/organizations/{organisation}/compose/validate:
post:
description: 'Accepts a docker-compose.yml file content, translates it into the internal compose definition format, and validates it. Quant Cloud provides comprehensive support for standard Docker Compose features including commands, entrypoints, health checks, dependencies, volume mounts, resource limits, and more. For detailed documentation on supported features and examples, see: https://docs.quantcdn.io/introduction-to-quant-cloud/importing-docker-compose/. Supports image tag suffixing via the imageSuffix query parameter or by sending a JSON wrapper with yamlContent and imageSuffix fields. When provided, internal image tags are transformed to {containerName}-{suffix} format (e.g., ''nginx-feature-xyz'').'
operationId: validateCompose
parameters:
- description: The organisation ID
example: test-org
explode: false
in: path
name: organisation
required: true
schema:
type: string
style: simple
- description: Optional. Image tag suffix to apply during translation. Transforms internal image tags to consistent '{containerName}-{suffix}' format (e.g., 'nginx-pr-456'). External images are left unchanged. Useful for feature branch deployments.
example: pr-456
explode: true
in: query
name: imageSuffix
required: false
schema:
pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
type: string
style: form
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/validateCompose_request'
description: The docker-compose.yml file content. Can be sent as raw YAML string or as a JSON wrapper containing both yamlContent (string) and imageSuffix (string) fields. Query parameter imageSuffix takes precedence if both are provided.
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/validateCompose_200_response'
description: Validation successful. Body contains the translated compose definition and any warnings.
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/validateCompose_422_response'
description: Invalid YAML input or validation failed
summary: Validate a compose file
tags:
- Compose
components:
schemas:
SpotConfiguration:
description: Spot instance strategy configuration for controlling cost vs reliability. Spot instances provide significant cost savings (~70%) but may be interrupted by AWS. Available for non-production environments.
example:
strategy: spot-only
properties:
strategy:
default: spot-only
description: Spot instance strategy. 'off' = On-Demand only (highest reliability, no savings). 'spot-only' = 100% Spot instances (~70% savings, default for non-prod). 'mixed-safe' = 50% Spot instances (~35% savings, requires multiple instances). 'mixed-aggressive' = 80% Spot instances (~56% savings, requires multiple instances).
enum:
- 'off'
- spot-only
- mixed-safe
- mixed-aggressive
example: spot-only
type: string
required:
- strategy
type: object
validateCompose_request:
properties:
compose:
description: The docker-compose.yml file content as a string
type: string
imageSuffix:
description: Optional image tag suffix (query parameter takes precedence)
pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
type: string
application:
description: Optional application name for context
type: string
required:
- compose
type: object
patchEnvironmentCompose_202_response_spotConfiguration:
example:
tolerateDowntime: true
strategy: 'off'
properties:
strategy:
example: 'off'
type: string
tolerateDowntime:
example: true
type: boolean
type: object
Container_originProtectionConfig:
description: Extended origin protection configuration with IP allow list support
example:
ipAllow:
- ipAllow
- ipAllow
enabled: true
properties:
enabled:
default: true
description: Whether origin protection is enabled. Defaults to true if this config object is provided.
type: boolean
ipAllow:
description: List of IP addresses or CIDR ranges that can bypass origin protection for direct access (e.g., VPN IPs)
items:
type: string
type:
- array
- 'null'
type:
- object
- 'null'
patchEnvironmentCompose_400_response:
example:
message: message
errors: '{}'
properties:
message:
type: string
errors:
type: object
type: object
validateCompose_422_response:
example:
error: Invalid YAML
properties:
error:
example: Invalid YAML
type: string
type: object
Container_secrets_inner:
example:
name: name
valueFrom: valueFrom
properties:
name:
description: The environment variable name to be set in the container
type: string
valueFrom:
description: The key of the secret in the environment's 'app-secrets' store
type: string
required:
- name
- valueFrom
type: object
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_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
patchEnvironmentCompose_202_response:
example:
spotConfiguration:
tolerateDowntime: true
strategy: 'off'
taskMemory: '2048'
maxCapacity: 1
minCapacity: 1
containers:
- '{}'
- '{}'
taskCpu: '512'
enableCrossAppNetworking: true
architecture: ARM64
enableCrossEnvNetworking: true
properties:
architecture:
example: ARM64
type: string
taskCpu:
example: '512'
type: string
taskMemory:
example: '2048'
type: string
minCapacity:
example: 1
type: integer
maxCapacity:
example: 1
type: integer
containers:
items:
type: object
type: array
spotConfiguration:
$ref: '#/components/schemas/patchEnvironmentCompose_202_response_spotConfiguration'
enableCrossEnvNetworking:
example: true
type: boolean
enableCrossAppNetworking:
example: true
type: boolean
type: object
Container:
example:
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
properties:
name:
description: Name of the container
pattern: ^[a-zA-Z0-9_-]+$
type: string
imageReference:
$ref: '#/components/schemas/Container_imageReference'
cpu:
description: Container-level CPU units
type:
- integer
- 'null'
memory:
description: Container-level memory hard limit (MiB)
type:
- integer
- 'null'
memoryReservation:
description: Container-level memory soft limit (MiB)
type:
- integer
- 'null'
exposedPorts:
description: List of container ports to expose
items:
type: integer
type:
- array
- 'null'
mountPoints:
items:
$ref: '#/components/schemas/Container_mountPoints_inner'
type:
- array
- 'null'
environment:
description: Environment variables specific to this container
items:
$ref: '#/components/schemas/Container_environment_inner'
type:
- array
- 'null'
secrets:
description: Secrets mapped to environment variables
items:
$ref: '#/components/schemas/Container_secrets_inner'
type:
- array
- 'null'
healthCheck:
$ref: '#/components/schemas/Container_healthCheck'
dependsOn:
description: Container startup dependencies
items:
$ref: '#/components/schemas/Container_dependsOn_inner'
type:
- array
- 'null'
command:
items:
type: string
type:
- array
- 'null'
entryPoint:
items:
type: string
type:
- array
- 'null'
workingDirectory:
type:
- string
- 'null'
essential:
default: true
type:
- boolean
- 'null'
readonlyRootFilesystem:
default: false
type:
- boolean
- 'null'
user:
type:
- string
- 'null'
originProtection:
default: false
description: Enable origin protection for all exposed ports on this container. Use originProtectionConfig for advanced options like IP allow lists.
type:
- boolean
- 'null'
originProtectionConfig:
$ref: '#/components/schemas/Container_originProtectionConfig'
required:
- imageReference
- name
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)
type: string
taskCpu:
description: Task-level CPU units (e.g., 256, 512, 1024)
type: integer
taskMemory:
description: Task-level memory in MB
type: integer
minCapacity:
description: Minimum number of instances
type: integer
maxCapacity:
description: Maximum number of instances
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.'
type:
- boolean
- 'null'
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.'
type:
- boolean
- 'null'
type: object
validateCompose_200_response:
example:
translatedComposeDefinition: '{}'
translationWarnings:
- Service 'db' uses 'build' directive, image will be internal with a generated tag.
- Volume 'cache' uses a relative path source, interpreted as logical volume name.
message: Docker-compose YAML translated and validated successfully.
properties:
message:
example: Docker-compose YAML translated and validated successfully.
type: string
translatedComposeDefinition:
description: The translated internal compose definition format
type: object
translationWarnings:
description: Optional warnings encountered during translation
example:
- Service 'db' uses 'build' directive, image will be internal with a generated tag.
- Volume 'cache' uses a relative path source, interpreted as logical volume name.
items:
type: string
type:
- array
- 'null'
required:
- message
- translatedComposeDefinition
type: object
patchEnvironmentCompose_request:
properties:
architecture:
type:
- string
- 'null'
taskCpu:
type:
- string
- 'null'
taskMemory:
type:
- string
- 'null'
minCapacity:
minimum: 0
type:
- integer
- 'null'
maxCapacity:
minimum: 1
type:
- integer
- 'null'
containers:
items:
type: object
type:
- array
- 'null'
spotConfiguration:
$ref: '#/components/schemas/patchEnvironmentCompose_request_spotConfiguration'
enableCrossEnvNetworking:
type:
- boolean
- 'null'
enableCrossAppNetworking:
type:
- boolean
- 'null'
type: object
Container_healthCheck:
description: Container health check configuration
example:
retries: 7
startPeriod: 279
interval: 171
command:
- command
- command
timeout: 15
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
type:
- integer
- 'null'
type:
- object
- 'null'
patchEnvironmentCompose_request_spotConfiguration:
properties:
strategy:
enum:
- 'off'
- spot-only
- mixed-safe
- mixed-aggressive
type: string
type:
- object
- 'null'
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_dependsOn_inner:
example:
condition: START
containerName: containerName
properties:
containerName:
description: The name of the container this container depends on
type: string
condition:
description: The condition to wait for on the dependency
enum:
- START
- HEALTHY
- COMPLETE
- SUCCESS
type: string
required:
- containerName
type: object
securitySchemes:
BearerAuth:
bearerFormat: JWT
description: 'Enter your Bearer token in the format: `Bearer <your-token-here>`. Obtain your API token from the QuantCDN dashboard under Profile > API Tokens.'
scheme: bearer
type: http