diff --git a/assets/acquia-v3-spec.json b/assets/acquia-v3-spec.json index 9868a0bd..8ff232a8 100644 --- a/assets/acquia-v3-spec.json +++ b/assets/acquia-v3-spec.json @@ -3,7 +3,7 @@ "info": { "title": "Acquia Cloud Platform API", "version": "3.0.0", - "description": "The Cloud Platform API includes over 200 endpoints to enhance developer workflow, website management, and provisioning capabilities.", + "description": "The Cloud Platform API includes over 200 endpoints to enhance developer workflow, website management, and provisioning capabilities.\n\n## API Exposure Directive\n\nAPI v3 operations explicitly declare maturity, audience, and availability through the `x-acquia-exposure` directive. The following example shows the canonical directive:\n\n```yaml\nx-acquia-exposure:\n stability: production\n audience:\n - public\n channels:\n rest:\n enabled: true\n cli:\n enabled: true\n command: sites:list\n```\n\n### Stability and Compatibility\n\nAPI v3 classifies all endpoints into three contractual stability tiers to indicate safe endpoints for production automation.\n\n- **Prototype:** These endpoints provide early access to experimental features. Because Acquia actively refines these features, Acquia can modify or remove these endpoints without advance notice. To ensure system stability, use prototype endpoints exclusively in test environments rather than production workflows.\n- **Development:** These denote endpoints under active development. Updates that maintain compatibility can occur. Advance notice is provided before compatibility changes or removal are introduced.\n- **Production:** These denote stable endpoints. Stable endpoints do not introduce compatibility changes within the major API version. Advance notice is provided before deprecation or compatibility changes are made.\n\n### Audience\n\nThe `x-acquia-exposure` directive includes an `audience` field that controls which consumers can discover and invoke the endpoint. Supported values are:\n\n- `public`: The endpoint is exposed to external consumers and integrators.\n- `internal`: The endpoint is restricted to internal Acquia services.\n- **Custom Scopes:** Extensible values such as partner or fedramp.\n\n### Deprecation\n\nDeprecated operations in API v3 declare a `deprecation` object in the `x-acquia-exposure` directive, specifying `deprecatedAt`, `removalAt`, and a `reason` with migration guidance. Developers should monitor these warnings and migrate to replacement endpoints before the removal date.\n\n### Versioning\n\nAPI v3 does not use URL or header-based versioning. Endpoints that reach production stability do not introduce breaking changes within the major API version, whereas non-production endpoints do not provide versioning guarantees for changes. API v3 is a separate API line from API v2 and the two coexist independently.\n\n### Interaction Channels\n\nThe `channels` block within the `x-acquia-exposure` directive defines the communication mediums where the operation is available.\n\n- `rest.enabled`: The operation is accessible through standard HTTP REST requests.\n- `cli.enabled`: The operation is accessible through Acquia CLI (ACLI).\n- `cli.command`: A string that maps the endpoint to its corresponding ACLI command name (for example, `sites:list`).\n\n### Rate Limits\n\nRate limiting for API v3 is enforced at the API Gateway level on a per-service basis. If a caller exceeds the configured threshold, the API Gateway rejects the request with a `429 Too Many Requests` status code. Callers must implement exponential backoff and respect the `Retry-After` response header.\n\n### Authentication\n\nAll API v3 operations require authentication through Acquia ID using OAuth2 protocols. Service specifications must integrate standard security schemes defined in the canonical OpenAPI 3.1 specification. To learn more about setup and credentials, refer to [Acquia Cloud API Authentication](https://docs.acquia.com/resources/api-v3).\n\n### Errors\n\nIn addition to standard error codes, some endpoints return a 503 Service Unavailable status code when dependent services are unavailable, returning the following JSON payload:\n\n```plaintext\napplication/json\n{\n \"error\": \"system\",\n \"message\": \"This action is currently unavailable. Please try again later.\"\n}\n```\n", "license": { "name": "Acquia Terms of Service", "url": "https://www.acquia.com/acquia/agreement" @@ -14,21 +14,6 @@ } }, "tags": [ - { - "name": "OpenAPI Specs", - "description": "Acquia Cloud Platform API specification", - "x-displayName": "OpenAPI Specs" - }, - { - "name": "Sites", - "description": "Site management", - "x-displayName": "Sites" - }, - { - "name": "CDNs", - "description": "CDN domain management and cache purge operations", - "x-displayName": "CDNs" - }, { "name": "Environments", "description": "Environment configuration and lifecycle", @@ -64,6 +49,31 @@ "description": "Automated domain pattern management", "x-displayName": "Domain Patterns" }, + { + "name": "SSH Keys", + "description": "SSH key management for user accounts", + "x-displayName": "SSH Keys" + }, + { + "name": "Sites", + "description": "Site management", + "x-displayName": "Sites" + }, + { + "name": "New Relic Accounts", + "description": "New Relic account provisioning state (read-only)", + "x-displayName": "New Relic Accounts" + }, + { + "name": "Launch Groups", + "description": "Launch group and domain-routing management", + "x-displayName": "Launch Groups" + }, + { + "name": "CDNs", + "description": "CDN domain management and cache purge operations", + "x-displayName": "CDNs" + }, { "name": "Tags", "description": "Tag management", @@ -80,19 +90,19 @@ "x-displayName": "Codebase References" }, { - "name": "Failover Groups", - "description": "Failover group management", - "x-displayName": "Failover Groups" + "name": "Source Sites", + "description": "Source CMS site management", + "x-displayName": "Source Sites" }, { - "name": "New Relic Accounts", - "description": "New Relic account provisioning state (read-only)", - "x-displayName": "New Relic Accounts" + "name": "OpenAPI Specs", + "description": "Acquia Cloud Platform API specification", + "x-displayName": "OpenAPI Specs" }, { - "name": "SSH Keys", - "description": "SSH key management for user accounts", - "x-displayName": "SSH Keys" + "name": "Failover Groups", + "description": "Failover group management", + "x-displayName": "Failover Groups" }, { "name": "Identity Providers", @@ -101,43 +111,53 @@ } ], "paths": { - "/sites": { + "/codebases/{codebaseId}/environments": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "summary": "Retrieves a list of sites accessible by the user.", - "operationId": "getSites", - "x-acquia-operation": { - "provider": { - "service": "site-service-php" - } - }, + "summary": "Retrieves a collection of environments for the specified codebase.", + "operationId": "getEnvironmentsByCodebaseId", "x-acquia-exposure": { - "stability": "production", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "sites:list" + "command": "codebases:list-environments" } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" } }, "tags": [ - "Sites" + "Environments" ], "parameters": [ + { + "name": "codebaseId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Codebase identifier" + }, { "name": "offset", "in": "query", @@ -170,22 +190,11 @@ "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" }, "example": "status=active;type=standard" - }, - { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" - }, - "example": "name,-created_at" } ], "responses": { "200": { - "description": "OK", + "description": "Environment collection", "content": { "application/hal+json": { "schema": { @@ -1428,356 +1437,6 @@ } ] }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "sort": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" - }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - } - ] - }, { "type": "object", "properties": { @@ -1790,63 +1449,127 @@ "allOf": [ { "type": "object", - "description": "A Site resource", + "description": "Environment properties", "properties": { "id": { "type": "string", - "description": "The unique identifier of the site", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "12345678-1234-1234-1234-123456789012" + "description": "The unique identifier of the environment", + "pattern": "^[a-zA-Z0-9-]+$" }, "name": { "type": "string", - "description": "The machine name of the site. Must start with a lowercase letter and contain only lowercase letters and numbers.", - "minLength": 1, - "maxLength": 14, - "pattern": "^[a-z][a-z0-9]*$", - "example": "mysite" + "description": "The machine name of the environment" }, "label": { "type": "string", - "description": "The human-readable label of the site", - "minLength": 1, - "maxLength": 50, - "example": "My Site 1" + "description": "The human-readable label of the environment" }, "description": { "type": "string", - "description": "A description of the site", - "maxLength": 512, - "example": "A production site for the marketing team." + "description": "A description of the environment" }, - "codebase_id": { + "status": { "type": "string", - "description": "The unique identifier of the codebase this site belongs to", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "550e8400-e29b-41d4-a716-446655441210" + "description": "The current status of the environment", + "enum": [ + "normal", + "allocated", + "launching", + "killed", + "cancelled", + "stopped" + ] }, - "status": { + "flags": { + "type": "object", + "description": "Environment configuration flags", + "additionalProperties": { + "type": "boolean" + } + }, + "properties": { + "type": "object", + "description": "Environment PHP and server properties", + "properties": { + "version": { + "type": "string", + "description": "PHP version" + }, + "max_execution_time": { + "type": "integer", + "description": "Maximum execution time in seconds" + }, + "memory_limit": { + "type": "integer", + "description": "Memory limit in MB" + }, + "apcu": { + "type": "integer", + "description": "APCu cache size in MB" + }, + "client_max_body_size": { + "type": "integer", + "description": "Maximum client body size in MB" + }, + "max_input_vars": { + "type": "integer", + "description": "Maximum number of input variables" + }, + "max_post_size": { + "type": "integer", + "description": "Maximum POST size in MB" + }, + "memcached_limit": { + "type": "integer", + "description": "Memcached limit in MB" + }, + "upload_max_filesize": { + "type": "integer", + "description": "Maximum upload file size in MB" + }, + "operating_system": { + "type": "string", + "description": "Operating system codename" + } + } + }, + "reference": { "type": "string", - "description": "The current lifecycle status of the site. ready indicates the site is active and operational. marked-for-deletion indicates the site has been scheduled for deletion and can still be recovered.\n", + "description": "The code reference (branch, tag, or commit) deployed to this environment" + }, + "code_switch_status": { + "type": "string", + "description": "The status of the Switch Code action", "enum": [ - "ready", - "marked-for-deletion" - ], - "example": "ready" + "IDLE", + "IN_PROGRESS" + ] }, - "delete_at": { + "ssh_url": { "type": "string", - "format": "date-time", - "description": "ISO 8601 datetime indicating when the site is scheduled for deletion. Only present when status is marked-for-deletion.", - "example": "2025-06-15T00:00:00Z" + "format": "uri", + "description": "The SSH connection string for accessing this environment" + }, + "region": { + "type": "string", + "description": "The cloud region where this environment is hosted" + }, + "domain_name": { + "type": "string", + "description": "The default domain for this environment" } }, "required": [ "id", "name", "label", - "codebase_id", - "status" + "status", + "flags", + "properties", + "reference", + "code_switch_status", + "ssh_url", + "domain_name" ] }, { @@ -2002,72 +1725,58 @@ } ] }, - "examples": { - "site_collection": { - "summary": "Site collection with pagination", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sites?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/sites?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/sites?limit=2{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/sites?limit=2&offset=0{&filter}", - "templated": true + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2&offset=0{&filter}", + "templated": true + } + }, + "count": 1, + "total": 1, + "pagination": { + "total": 1, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "name": "dev", + "label": "Dev", + "description": "Development environment", + "status": "normal", + "reference": "branch/main", + "region": "us-east-1", + "code_switch_status": "IDLE", + "ssh_url": "ssh://site.dev@sitedev.ssh.hosted.acquia-sites.com", + "domain_name": "env-default-domain.example.com", + "flags": { + "production": false, + "protection_mode": false }, - "sort": { - "href": "https://api.acquia.com/v3/sites?limit=2&offset=0{&sort}", - "templated": true + "properties": { + "version": "8.3" }, - "next": { - "href": "https://api.acquia.com/v3/sites?limit=2&offset=2" - } - }, - "count": 2, - "total": 4, - "pagination": { - "total": 4, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890", - "name": "mysite", - "label": "My Site", - "description": "A description of my site.", - "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", - "status": "ready", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sites/f1a2b3c4-d5e6-7890-abcd-ef1234567890" - } - } - }, - { - "id": "e2b3c4d5-f6a7-8901-bcde-f12345678901", - "name": "anothersite", - "label": "Another Site", - "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", - "status": "marked-for-deletion", - "delete_at": "2025-01-01T00:00:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sites/e2b3c4d5-f6a7-8901-bcde-f12345678901" - } - } + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc" } - ] + } } - } + ] } } } @@ -2203,6 +1912,53 @@ } } }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, "500": { "description": "Internal Server Error", "content": { @@ -2255,280 +2011,501 @@ }, "security": [ { - "Site_Service_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] - }, - "post": { - "summary": "Creates a site for a codebase.", - "operationId": "createSite", - "x-acquia-operation": { - "provider": { - "service": "site-service-php" - } - }, + } + }, + "/codebases/{codebaseId}/environments/{environmentId}": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Retrieves details for an environment by codebase and environment ID.", + "operationId": "findEnvironmentByCodebaseIdAndEnvironmentId", "x-acquia-exposure": { - "stability": "production", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "sites:create" + "command": "codebases:find-environment" } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" } }, "tags": [ - "Sites" + "Environments" ], - "requestBody": { - "description": "Site creation request body", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The machine name of the site. Must start with a lowercase letter and contain only lowercase letters and numbers.", - "minLength": 1, - "maxLength": 14, - "pattern": "^[a-z][a-z0-9]*$", - "example": "mysite" - }, - "label": { - "type": "string", - "description": "The human-readable label for the site.", - "minLength": 1, - "maxLength": 50, - "example": "My Site" - }, - "codebase_id": { - "type": "string", - "description": "The unique identifier of the codebase to associate with this site.", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "a9b8c7d6-e5f4-3210-abcd-ef9876543210" - }, - "site_id": { - "type": "string", - "format": "uuid", - "description": "An optional explicit UUID for the new site. A UUID is generated automatically if omitted.", - "example": "0ebce493-9d09-479d-a9a8-138a206fa687" - }, - "description": { - "type": "string", - "description": "An optional description for the site.", - "maxLength": 512, - "example": "A production site for the marketing team." - } - }, - "required": [ - "name", - "label", - "codebase_id" - ], - "additionalProperties": false - }, - "examples": { - "create_site_full": { - "summary": "Create a new site with all fields", - "value": { - "name": "mysite", - "label": "My Site", - "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", - "site_id": "0ebce493-9d09-479d-a9a8-138a206fa687", - "description": "This is a description of my site." - } - }, - "create_site_minimal": { - "summary": "Create a new site with required fields only", - "value": { - "name": "newsitename", - "label": "New Site Label", - "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210" - } - } - } - } + "parameters": [ + { + "name": "codebaseId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Codebase identifier" + }, + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." } - }, + ], "responses": { "200": { - "description": "Site created", + "description": "Environment details", "content": { "application/hal+json": { "schema": { "allOf": [ { - "allOf": [ - { + "type": "object", + "description": "Environment properties", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the environment", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "name": { + "type": "string", + "description": "The machine name of the environment" + }, + "label": { + "type": "string", + "description": "The human-readable label of the environment" + }, + "description": { + "type": "string", + "description": "A description of the environment" + }, + "status": { + "type": "string", + "description": "The current status of the environment", + "enum": [ + "normal", + "allocated", + "launching", + "killed", + "cancelled", + "stopped" + ] + }, + "flags": { + "type": "object", + "description": "Environment configuration flags", + "additionalProperties": { + "type": "boolean" + } + }, + "properties": { "type": "object", + "description": "Environment PHP and server properties", "properties": { - "_links": { + "version": { + "type": "string", + "description": "PHP version" + }, + "max_execution_time": { + "type": "integer", + "description": "Maximum execution time in seconds" + }, + "memory_limit": { + "type": "integer", + "description": "Memory limit in MB" + }, + "apcu": { + "type": "integer", + "description": "APCu cache size in MB" + }, + "client_max_body_size": { + "type": "integer", + "description": "Maximum client body size in MB" + }, + "max_input_vars": { + "type": "integer", + "description": "Maximum number of input variables" + }, + "max_post_size": { + "type": "integer", + "description": "Maximum POST size in MB" + }, + "memcached_limit": { + "type": "integer", + "description": "Memcached limit in MB" + }, + "upload_max_filesize": { + "type": "integer", + "description": "Maximum upload file size in MB" + }, + "operating_system": { + "type": "string", + "description": "Operating system codename" + } + } + }, + "reference": { + "type": "string", + "description": "The code reference (branch, tag, or commit) deployed to this environment" + }, + "code_switch_status": { + "type": "string", + "description": "The status of the Switch Code action", + "enum": [ + "IDLE", + "IN_PROGRESS" + ] + }, + "ssh_url": { + "type": "string", + "format": "uri", + "description": "The SSH connection string for accessing this environment" + }, + "region": { + "type": "string", + "description": "The cloud region where this environment is hosted" + }, + "domain_name": { + "type": "string", + "description": "The default domain for this environment" + } + }, + "required": [ + "id", + "name", + "label", + "status", + "flags", + "properties", + "reference", + "code_switch_status", + "ssh_url", + "domain_name" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { "type": "object", - "description": "HAL links for the resource", + "description": "HAL link object", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "self" + "href" ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" }, - "required": [ - "href" - ], - "examples": [ + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - { + "_embedded": { "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] + "description": "Embedded resources (optional)", + "additionalProperties": {} } + }, + "required": [ + "_links" ] }, { "type": "object", "properties": { - "message": { - "type": "string", - "const": "Site creation started.", - "description": "Confirmation message indicating site creation has been initiated" + "_embedded": { + "type": "object", + "properties": { + "codebase": { + "allOf": [ + { + "type": "object", + "description": "Embedded codebase resource", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the codebase" + } + }, + "required": [ + "id" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } } } } @@ -2537,51 +2514,58 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/sites/f1a2b3c4-d5e6-7890-abcd-ef1234567890" + "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc" }, - "parent": { - "href": "https://api.acquia.com/v3/sites" + "codebase": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323" } }, - "message": "Site creation started." - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", + "id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "name": "environment_3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "label": "Environment_3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "description": "Description of 3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "status": "normal", + "flags": { + "production": false, + "protection_mode": false + }, "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." + "version": "8.3", + "max_execution_time": 10, + "memory_limit": 192, + "apcu": 32, + "client_max_body_size": 192, + "max_input_vars": 1000, + "max_post_size": 256, + "memcached_limit": 128, + "upload_max_filesize": 192, + "operating_system": "focal" + }, + "reference": "tag/v3.1", + "region": "us-east-1", + "code_switch_status": "IDLE", + "ssh_url": "ssh://site.dev@sitedev.ssh.hosted.acquia-sites.com", + "domain_name": "env-default-domain.example.com", + "_embedded": { + "codebase": { + "id": "d3f7270e-c45f-4801-9308-5e8afe84a323", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323" + } } } - }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." } } } + }, + "links": { + "self": { + "operationId": "findEnvironmentByEnvironmentId", + "parameters": { + "environmentId": "$request.path.environmentId" + } + } } }, "401": { @@ -2725,53 +2709,6 @@ } } }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, "500": { "description": "Internal Server Error", "content": { @@ -2824,46 +2761,46 @@ }, "security": [ { - "Site_Service_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] } }, - "/sites/{siteId}": { + "/sites/{siteId}/environments": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "summary": "Retrieves a site by its ID.", - "operationId": "findSiteBySiteId", - "x-acquia-operation": { - "provider": { - "service": "site-service-php" - } - }, + "summary": "Retrieves a collection of environments for the specified site.", + "operationId": "getEnvironmentsBySiteId", "x-acquia-exposure": { - "stability": "production", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "sites:find" + "command": "sites:list-environments" } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" } }, "tags": [ - "Sites" + "Environments" ], "parameters": [ { @@ -2872,664 +2809,36 @@ "required": true, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "12345678-1234-1234-1234-123456789012" + "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the site" + "description": "Unique identifier for the site." + }, + { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } } ], "responses": { "200": { - "description": "Site details", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "description": "A Site resource", - "properties": { - "id": { - "type": "string", - "description": "The unique identifier of the site", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "12345678-1234-1234-1234-123456789012" - }, - "name": { - "type": "string", - "description": "The machine name of the site. Must start with a lowercase letter and contain only lowercase letters and numbers.", - "minLength": 1, - "maxLength": 14, - "pattern": "^[a-z][a-z0-9]*$", - "example": "mysite" - }, - "label": { - "type": "string", - "description": "The human-readable label of the site", - "minLength": 1, - "maxLength": 50, - "example": "My Site 1" - }, - "description": { - "type": "string", - "description": "A description of the site", - "maxLength": 512, - "example": "A production site for the marketing team." - }, - "codebase_id": { - "type": "string", - "description": "The unique identifier of the codebase this site belongs to", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "550e8400-e29b-41d4-a716-446655441210" - }, - "status": { - "type": "string", - "description": "The current lifecycle status of the site. ready indicates the site is active and operational. marked-for-deletion indicates the site has been scheduled for deletion and can still be recovered.\n", - "enum": [ - "ready", - "marked-for-deletion" - ], - "example": "ready" - }, - "delete_at": { - "type": "string", - "format": "date-time", - "description": "ISO 8601 datetime indicating when the site is scheduled for deletion. Only present when status is marked-for-deletion.", - "example": "2025-06-15T00:00:00Z" - } - }, - "required": [ - "id", - "name", - "label", - "codebase_id", - "status" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "codebase": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sites/f1a2b3c4-d5e6-7890-abcd-ef1234567890" - }, - "codebase": { - "href": "https://api.acquia.com/v3/codebases/a9b8c7d6-e5f4-3210-abcd-ef9876543210" - } - }, - "id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890", - "name": "mysite", - "label": "My Site", - "description": "This is a description of my site.", - "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", - "status": "ready" - } - } - }, - "links": { - "self": { - "operationId": "findSiteBySiteId", - "parameters": { - "siteId": "$request.path.siteId" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Site_Service_API_BearerAuth": [] - } - ] - }, - "put": { - "summary": "Updates a site by its ID.", - "operationId": "updateSiteBySiteId", - "x-acquia-operation": { - "provider": { - "service": "site-service-php" - } - }, - "x-acquia-exposure": { - "stability": "production", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - }, - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "sites:update" - } - } - }, - "tags": [ - "Sites" - ], - "parameters": [ - { - "name": "siteId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "12345678-1234-1234-1234-123456789012" - }, - "description": "Unique identifier for the site" - } - ], - "requestBody": { - "description": "Site update request body", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "label": { - "type": "string", - "description": "The new human-readable label for the site.", - "minLength": 1, - "maxLength": 50, - "example": "My Updated Site" - }, - "description": { - "type": "string", - "description": "The new description for the site.", - "maxLength": 512, - "example": "Updated description for this site." - } - }, - "additionalProperties": false, - "minProperties": 1 - }, - "examples": { - "update_label": { - "summary": "Update site label", - "value": { - "label": "My Updated Site" - } - }, - "update_description": { - "summary": "Update site description", - "value": { - "description": "Updated description for this site." - } - }, - "update_both": { - "summary": "Update label and description", - "value": { - "label": "My Updated Site", - "description": "Updated description for this site." - } - } - } - } - } - }, - "responses": { - "202": { - "description": "Site update started", + "description": "Environment collection", "content": { "application/hal+json": { "schema": { @@ -3677,385 +2986,264 @@ { "type": "object", "properties": { - "message": { - "type": "string", - "description": "The message content" + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] } }, "required": [ - "message" + "_embedded" ] } ] }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Site update started.", - "description": "Confirmation message indicating site update has been initiated" - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sites/12345678-1234-1234-1234-123456789012" - }, - "parent": { - "href": "https://api.acquia.com/v3/sites" - } - }, - "message": "Site update started." - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Site_Service_API_BearerAuth": [] - } - ] - }, - "delete": { - "summary": "Deletes a site by its ID.", - "operationId": "deleteSiteBySiteId", - "x-acquia-operation": { - "provider": { - "service": "site-service-php" - } - }, - "x-acquia-exposure": { - "stability": "production", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - }, - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "sites:delete" - } - } - }, - "tags": [ - "Sites" - ], - "parameters": [ - { - "name": "siteId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "12345678-1234-1234-1234-123456789012" - }, - "description": "Unique identifier for the site" - } - ], - "responses": { - "202": { - "description": "Site deletion accepted", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ { "allOf": [ { - "type": "object", - "properties": { - "_links": { + "allOf": [ + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", "type": "object", - "description": "HAL link object", "properties": { "href": { "type": "string", @@ -4110,11 +3298,162 @@ "templated": true } ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" } }, - "required": [ - "self" - ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -4174,52 +3513,564 @@ ] } }, - "_embedded": { + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] } }, "required": [ - "_links" + "count", + "total", + "pagination" ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } }, { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true } }, - "required": [ - "message" - ] + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } } ] }, { "type": "object", "properties": { - "message": { - "type": "string", - "const": "Site deleted.", - "description": "Confirmation message indicating the site has been deleted." + "_embedded": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "description": "Environment properties", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the environment", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "name": { + "type": "string", + "description": "The machine name of the environment" + }, + "label": { + "type": "string", + "description": "The human-readable label of the environment" + }, + "description": { + "type": "string", + "description": "A description of the environment" + }, + "status": { + "type": "string", + "description": "The current status of the environment", + "enum": [ + "normal", + "allocated", + "launching", + "killed", + "cancelled", + "stopped" + ] + }, + "flags": { + "type": "object", + "description": "Environment configuration flags", + "additionalProperties": { + "type": "boolean" + } + }, + "properties": { + "type": "object", + "description": "Environment PHP and server properties", + "properties": { + "version": { + "type": "string", + "description": "PHP version" + }, + "max_execution_time": { + "type": "integer", + "description": "Maximum execution time in seconds" + }, + "memory_limit": { + "type": "integer", + "description": "Memory limit in MB" + }, + "apcu": { + "type": "integer", + "description": "APCu cache size in MB" + }, + "client_max_body_size": { + "type": "integer", + "description": "Maximum client body size in MB" + }, + "max_input_vars": { + "type": "integer", + "description": "Maximum number of input variables" + }, + "max_post_size": { + "type": "integer", + "description": "Maximum POST size in MB" + }, + "memcached_limit": { + "type": "integer", + "description": "Memcached limit in MB" + }, + "upload_max_filesize": { + "type": "integer", + "description": "Maximum upload file size in MB" + }, + "operating_system": { + "type": "string", + "description": "Operating system codename" + } + } + }, + "reference": { + "type": "string", + "description": "The code reference (branch, tag, or commit) deployed to this environment" + }, + "code_switch_status": { + "type": "string", + "description": "The status of the Switch Code action", + "enum": [ + "IDLE", + "IN_PROGRESS" + ] + }, + "ssh_url": { + "type": "string", + "format": "uri", + "description": "The SSH connection string for accessing this environment" + }, + "region": { + "type": "string", + "description": "The cloud region where this environment is hosted" + }, + "domain_name": { + "type": "string", + "description": "The default domain for this environment" + } + }, + "required": [ + "id", + "name", + "label", + "status", + "flags", + "properties", + "reference", + "code_switch_status", + "ssh_url", + "domain_name" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + }, + "required": [ + "items" + ] } - } + }, + "required": [ + "_embedded" + ] } ] }, "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/sites/550e8400-e29b-41d4-a716-446655440002" + "href": "https://api.acquia.com/v3/sites/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2&offset=0" }, - "parent": { - "href": "https://api.acquia.com/v3/sites" + "limit": { + "href": "https://api.acquia.com/v3/sites/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/sites/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2{&offset}", + "templated": true } }, - "message": "Site deleted." + "count": 1, + "total": 1, + "pagination": { + "total": 1, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "name": "dev", + "label": "Dev", + "description": "Development environment", + "status": "normal", + "reference": "branch/main", + "region": "us-east-1", + "code_switch_status": "IDLE", + "ssh_url": "ssh://site.dev@sitedev.ssh.hosted.acquia-sites.com", + "domain_name": "env-default-domain.example.com", + "flags": { + "production": false, + "protection_mode": false + }, + "properties": { + "version": "8.3" + }, + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc" + } + } + } + ] + } + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } } } } @@ -4365,53 +4216,6 @@ } } }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, "500": { "description": "Internal Server Error", "content": { @@ -4464,147 +4268,84 @@ }, "security": [ { - "Site_Service_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] } }, - "/sites/{siteId}/actions/duplicate": { + "/private-networks/{privateNetworkId}/environments": { "servers": [ { "url": "https://api.acquia.com/v3" } ], - "post": { - "summary": "Duplicates a site from another given site.", - "operationId": "duplicateSiteBySiteId", - "x-acquia-operation": { - "provider": { - "service": "site-service-php" - } - }, + "get": { + "summary": "Retrieves a collection of environments associated with the specified private network.", + "operationId": "getEnvironmentsByPrivateNetworkId", "x-acquia-exposure": { - "stability": "production", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "sites:duplicate" + "command": "private-networks:list-environments" } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" } }, "tags": [ - "Sites" + "Environments" ], "parameters": [ { - "name": "siteId", + "name": "privateNetworkId", "in": "path", "required": true, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "12345678-1234-1234-1234-123456789012" + "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the site" - } - ], - "requestBody": { - "description": "Site duplication request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "environment_mapping": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+:[a-zA-Z0-9-]+$", - "description": "Environment mapping in the format 'sourceEnvId:targetEnvId'" - }, - "description": "Array of environment mappings. You must provide exactly one environment mapping. Each entry maps a source environment ID to a target environment ID, separated by a colon.\n", - "minItems": 1, - "maxItems": 1, - "example": [ - "0ebce493-9d09-479d-a9a8-138a206fa687:a1b2c3d4-e5f6-7890-abcd-ef1234567890" - ] - }, - "site_name": { - "type": "string", - "description": "Machine name for the duplicated site. Must start with a lowercase letter and contain only lowercase letters and numbers. Maximum 14 characters.\n", - "minLength": 1, - "maxLength": 14, - "pattern": "^[a-z][a-z0-9]*$", - "example": "dupsite" - }, - "site_label": { - "type": "string", - "description": "Human-readable label for the duplicated site. Must only contain letters, numbers, and spaces. Maximum 50 characters.\n", - "minLength": 1, - "maxLength": 50, - "example": "Duplicated Site" - }, - "site_id": { - "type": "string", - "format": "uuid", - "description": "An optional explicit UUID for the new duplicated site. A UUID is generated automatically if omitted.", - "example": "f1a2b3c4-d5e6-7890-abcd-ef1234567890" - }, - "hook_argument": { - "type": "string", - "description": "Optional hook argument to pass to the duplication process.", - "example": "--verbose" - } - }, - "required": [ - "environment_mapping", - "site_name", - "site_label" - ], - "additionalProperties": false - }, - "examples": { - "duplicate_basic": { - "summary": "Duplicate a site with required fields", - "description": "Duplicates a site with a single environment mapping", - "value": { - "environment_mapping": [ - "0ebce493-9d09-479d-a9a8-138a206fa687:a1b2c3d4-e5f6-7890-abcd-ef1234567890" - ], - "site_name": "dupsite", - "site_label": "Duplicated Site" - } - }, - "duplicate_with_options": { - "summary": "Duplicate a site with all options", - "description": "Duplicates a site specifying a custom site ID and hook argument", - "value": { - "environment_mapping": [ - "0ebce493-9d09-479d-a9a8-138a206fa687:a1b2c3d4-e5f6-7890-abcd-ef1234567890" - ], - "site_name": "duphook", - "site_label": "Dup With Hook", - "site_id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890", - "hook_argument": "my-hook-arg" - } - } - } + "description": "Private network identifier" + }, + { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 } } - }, + ], "responses": { - "202": { - "description": "Site duplication started", + "200": { + "description": "Environment collection", "content": { "application/hal+json": { "schema": { @@ -4752,392 +4493,264 @@ { "type": "object", "properties": { - "message": { - "type": "string", - "description": "The message content" + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] } }, "required": [ - "message" + "_embedded" ] } ] }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Site duplication started.", - "description": "Confirmation message" - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sites/f1a2b3c4-d5e6-7890-abcd-ef1234567890" - }, - "parent": { - "href": "https://api.acquia.com/v3/sites" - } - }, - "message": "Site duplication started." - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Site_Service_API_BearerAuth": [] - } - ] - } - }, - "/sites/{siteId}/actions/recover": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "post": { - "summary": "Recovers a site that is scheduled for deletion", - "operationId": "recoverSiteBySiteId", - "x-acquia-operation": { - "provider": { - "service": "site-service-php" - } - }, - "x-acquia-exposure": { - "stability": "production", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - }, - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "sites:recover" - } - } - }, - "tags": [ - "Sites" - ], - "parameters": [ - { - "name": "siteId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "12345678-1234-1234-1234-123456789012" - }, - "description": "Unique identifier for the site" - } - ], - "responses": { - "202": { - "description": "Site recovery started", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ { "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, { "type": "object", "properties": { "_links": { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", "type": "object", - "description": "HAL link object", "properties": { "href": { "type": "string", @@ -5192,11 +4805,162 @@ "templated": true } ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" } }, - "required": [ - "self" - ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -5256,533 +5020,564 @@ ] } }, - "_embedded": { + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] } }, "required": [ - "_links" + "count", + "total", + "pagination" ] - }, + } + ], + "examples": [ { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true } }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Site recovery started.", - "description": "Confirmation message indicating the site recovery has been initiated." - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sites/11111111-1111-1111-1111-111111111111" - }, - "parent": { - "href": "https://api.acquia.com/v3/sites" - } - }, - "message": "Site recovery started." - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } }, - "message": { - "type": "string" + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } } - }, - "required": [ - "error", - "message" ] }, { "type": "object", "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." + "_embedded": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "description": "Environment properties", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the environment", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "name": { + "type": "string", + "description": "The machine name of the environment" + }, + "label": { + "type": "string", + "description": "The human-readable label of the environment" + }, + "description": { + "type": "string", + "description": "A description of the environment" + }, + "status": { + "type": "string", + "description": "The current status of the environment", + "enum": [ + "normal", + "allocated", + "launching", + "killed", + "cancelled", + "stopped" + ] + }, + "flags": { + "type": "object", + "description": "Environment configuration flags", + "additionalProperties": { + "type": "boolean" + } + }, + "properties": { + "type": "object", + "description": "Environment PHP and server properties", + "properties": { + "version": { + "type": "string", + "description": "PHP version" + }, + "max_execution_time": { + "type": "integer", + "description": "Maximum execution time in seconds" + }, + "memory_limit": { + "type": "integer", + "description": "Memory limit in MB" + }, + "apcu": { + "type": "integer", + "description": "APCu cache size in MB" + }, + "client_max_body_size": { + "type": "integer", + "description": "Maximum client body size in MB" + }, + "max_input_vars": { + "type": "integer", + "description": "Maximum number of input variables" + }, + "max_post_size": { + "type": "integer", + "description": "Maximum POST size in MB" + }, + "memcached_limit": { + "type": "integer", + "description": "Memcached limit in MB" + }, + "upload_max_filesize": { + "type": "integer", + "description": "Maximum upload file size in MB" + }, + "operating_system": { + "type": "string", + "description": "Operating system codename" + } + } + }, + "reference": { + "type": "string", + "description": "The code reference (branch, tag, or commit) deployed to this environment" + }, + "code_switch_status": { + "type": "string", + "description": "The status of the Switch Code action", + "enum": [ + "IDLE", + "IN_PROGRESS" + ] + }, + "ssh_url": { + "type": "string", + "format": "uri", + "description": "The SSH connection string for accessing this environment" + }, + "region": { + "type": "string", + "description": "The cloud region where this environment is hosted" + }, + "domain_name": { + "type": "string", + "description": "The default domain for this environment" + } + }, + "required": [ + "id", + "name", + "label", + "status", + "flags", + "properties", + "reference", + "code_switch_status", + "ssh_url", + "domain_name" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + }, + "required": [ + "items" + ] } }, "required": [ - "error", - "message" + "_embedded" ] } ] }, "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sites/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2&offset=0" }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] + "limit": { + "href": "https://api.acquia.com/v3/sites/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/sites/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2{&offset}", + "templated": true } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" + }, + "count": 1, + "total": 1, + "pagination": { + "total": 1, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "name": "dev", + "label": "Dev", + "description": "Development environment", + "status": "normal", + "reference": "branch/main", + "region": "us-east-1", + "code_switch_status": "IDLE", + "ssh_url": "ssh://site.dev@sitedev.ssh.hosted.acquia-sites.com", + "domain_name": "env-default-domain.example.com", + "flags": { + "production": false, + "protection_mode": false }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" + "properties": { + "version": "8.3" }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc" + } } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." + } + ] + } } } } }, - "500": { - "description": "Internal Server Error", + "400": { + "description": "Validation Error", "content": { "application/json": { "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] + "type": "object", + "properties": { + "error": { + "type": "string" }, - { + "message": { "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } + "additionalProperties": { + "type": "string" }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Site_Service_API_BearerAuth": [] - } - ] - } - }, - "/sites/{siteId}/actions/schedule-delete": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "post": { - "summary": "Schedules a site for deletion", - "operationId": "scheduleDeleteSiteBySiteId", - "x-acquia-operation": { - "provider": { - "service": "site-service-php" - } - }, - "x-acquia-exposure": { - "stability": "production", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - }, - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "sites:schedule-delete" - } - } - }, - "tags": [ - "Sites" - ], - "parameters": [ - { - "name": "siteId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "12345678-1234-1234-1234-123456789012" - }, - "description": "Unique identifier for the site" - } - ], - "responses": { - "202": { - "description": "Site deletion scheduled", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Site deletion scheduled.", - "description": "Confirmation message indicating the site deletion has been scheduled." - } + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." } } + }, + "required": [ + "error", + "message" ] }, "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sites/550e8400-e29b-41d4-a716-446655440002" - }, - "parent": { - "href": "https://api.acquia.com/v3/sites" - } - }, - "message": "Site deletion scheduled." + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } } } } @@ -5928,53 +5723,6 @@ } } }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, "500": { "description": "Internal Server Error", "content": { @@ -6027,119 +5775,909 @@ }, "security": [ { - "Site_Service_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] } }, - "/codebases/{codebaseId}/sites": { + "/environments/{environmentId}": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "summary": "Retrieves a list of sites associated with a codebase.", - "operationId": "getSitesByCodebaseId", - "x-acquia-operation": { - "provider": { - "service": "site-service-php" - } - }, + "summary": "Get environment details.", + "operationId": "findEnvironmentByEnvironmentId", "x-acquia-exposure": { - "stability": "production", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "codebases:list-sites" + "command": "environments:find" } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" } }, "tags": [ - "Sites" + "Environments" ], "parameters": [ { - "name": "codebaseId", + "name": "environmentId", "in": "path", "required": true, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "550e8400-e29b-41d4-a716-446655441212" - }, - "description": "Unique identifier for the codebase" - }, - { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "example": 20 - } - }, - { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "minimum": 1, - "example": 10 - } - }, - { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" - }, - "example": "status=active;type=standard" - }, - { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + "pattern": "^[a-zA-Z0-9-]+$" }, - "example": "name,-created_at" + "description": "Unique identifier for the environment." } ], "responses": { "200": { - "description": "OK", + "description": "Environment details", "content": { "application/hal+json": { "schema": { "allOf": [ { - "allOf": [ - { + "type": "object", + "description": "Environment properties", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the environment", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "name": { + "type": "string", + "description": "The machine name of the environment" + }, + "label": { + "type": "string", + "description": "The human-readable label of the environment" + }, + "description": { + "type": "string", + "description": "A description of the environment" + }, + "status": { + "type": "string", + "description": "The current status of the environment", + "enum": [ + "normal", + "allocated", + "launching", + "killed", + "cancelled", + "stopped" + ] + }, + "flags": { "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", + "description": "Environment configuration flags", + "additionalProperties": { + "type": "boolean" + } + }, + "properties": { + "type": "object", + "description": "Environment PHP and server properties", + "properties": { + "version": { + "type": "string", + "description": "PHP version" + }, + "max_execution_time": { + "type": "integer", + "description": "Maximum execution time in seconds" + }, + "memory_limit": { + "type": "integer", + "description": "Memory limit in MB" + }, + "apcu": { + "type": "integer", + "description": "APCu cache size in MB" + }, + "client_max_body_size": { + "type": "integer", + "description": "Maximum client body size in MB" + }, + "max_input_vars": { + "type": "integer", + "description": "Maximum number of input variables" + }, + "max_post_size": { + "type": "integer", + "description": "Maximum POST size in MB" + }, + "memcached_limit": { + "type": "integer", + "description": "Memcached limit in MB" + }, + "upload_max_filesize": { + "type": "integer", + "description": "Maximum upload file size in MB" + }, + "operating_system": { + "type": "string", + "description": "Operating system codename" + } + } + }, + "reference": { + "type": "string", + "description": "The code reference (branch, tag, or commit) deployed to this environment" + }, + "code_switch_status": { + "type": "string", + "description": "The status of the Switch Code action", + "enum": [ + "IDLE", + "IN_PROGRESS" + ] + }, + "ssh_url": { + "type": "string", + "format": "uri", + "description": "The SSH connection string for accessing this environment" + }, + "region": { + "type": "string", + "description": "The cloud region where this environment is hosted" + }, + "domain_name": { + "type": "string", + "description": "The default domain for this environment" + } + }, + "required": [ + "id", + "name", + "label", + "status", + "flags", + "properties", + "reference", + "code_switch_status", + "ssh_url", + "domain_name" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "properties": { + "codebase": { + "allOf": [ + { + "type": "object", + "description": "Embedded codebase resource", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the codebase" + } + }, + "required": [ + "id" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc" + }, + "codebase": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323" + } + }, + "id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "name": "environment_3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "label": "Environment_3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "description": "Description of 3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "status": "normal", + "flags": { + "production": false, + "protection_mode": false + }, + "properties": { + "version": "8.3", + "max_execution_time": 10, + "memory_limit": 192, + "apcu": 32, + "client_max_body_size": 192, + "max_input_vars": 1000, + "max_post_size": 256, + "memcached_limit": 128, + "upload_max_filesize": 192, + "operating_system": "focal" + }, + "reference": "tag/v3.1", + "region": "us-east-1", + "code_switch_status": "IDLE", + "ssh_url": "ssh://site.dev@sitedev.ssh.hosted.acquia-sites.com", + "domain_name": "env-default-domain.example.com", + "_embedded": { + "codebase": { + "id": "d3f7270e-c45f-4801-9308-5e8afe84a323", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323" + } + } + } + } + } + } + }, + "links": { + "self": { + "operationId": "findEnvironmentByEnvironmentId", + "parameters": { + "environmentId": "$request.path.environmentId" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Environment_Service_API_BearerAuth": [] + } + ] + }, + "put": { + "summary": "Modifies properties settings for the specified environment.", + "operationId": "updateEnvironmentByEnvironmentId", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "environments:update" + } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" + } + }, + "tags": [ + "Environments" + ], + "parameters": [ + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + } + ], + "requestBody": { + "description": "Update environment request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "label": { + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Human-readable label for the environment." + }, + "description": { + "type": "string", + "minLength": 1, + "maxLength": 512, + "description": "Description for the environment." + }, + "properties": { + "type": "object", + "description": "PHP and server configuration properties for the environment.", + "properties": { + "version": { + "type": "string", + "description": "PHP version (e.g. \"8.3\")." + }, + "apcu": { + "type": "integer", + "description": "APCu memory limit in MB." + }, + "max_execution_time": { + "type": "integer", + "description": "PHP max execution time in seconds." + }, + "memory_limit": { + "type": "integer", + "description": "PHP memory limit in MB." + }, + "opcache": { + "type": "integer", + "description": "OPcache memory limit in MB." + }, + "interned_strings_buffer": { + "type": "integer", + "description": "OPcache interned strings buffer in MB." + }, + "client_max_body_size": { + "type": "integer", + "description": "Nginx client_max_body_size in MB." + }, + "upload_max_filesize": { + "type": "integer", + "description": "PHP upload_max_filesize in MB." + }, + "max_post_size": { + "type": "integer", + "description": "PHP post_max_size in MB." + }, + "max_input_vars": { + "type": "integer", + "description": "PHP max_input_vars." + }, + "memcached_limit": { + "type": "integer", + "description": "Memcached memory limit in MB." + }, + "operating_system": { + "type": "string", + "description": "Operating system (e.g. \"focal\")." + }, + "sendmail_path": { + "type": "string", + "description": "Sendmail path configuration." + } + } + } + }, + "additionalProperties": false, + "minProperties": 1 + }, + "examples": { + "update_label": { + "summary": "Update environment label", + "value": { + "label": "Staging", + "description": "Staging environment" + } + }, + "update_properties": { + "summary": "Update PHP properties", + "value": { + "properties": { + "version": "8.3", + "memory_limit": 256 + } + } + } + } + } + } + }, + "responses": { + "202": { + "description": "Environment update started", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", "properties": { "self": { "type": "object", @@ -6275,232 +6813,414 @@ { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "_embedded" + "message" ] } ] }, { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "prev": { - "description": "Link to the previous page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Environment update started.", + "description": "Confirmation message that the environment update has been started." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc" + } + }, + "message": "Environment update started." + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Environment_Service_API_BearerAuth": [] + } + ] + } + }, + "/environments/{environmentId}/actions/enable-protection-mode": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "post": { + "summary": "Enable Environment Protection mode.", + "operationId": "enableEnvironmentProtectionModeByEnvironmentId", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "environments:enable-protection-mode" + } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" + } + }, + "tags": [ + "Environments" + ], + "parameters": [ + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + } + ], + "responses": { + "202": { + "description": "Enable protection mode initiated", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { "type": "string", "description": "A secondary key for selecting links" }, @@ -6529,10 +7249,429 @@ "templated": true } ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - "next": { - "description": "Link to the next page (templated)", + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Environment protection mode enabled.", + "description": "Confirmation message" + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323" + } + }, + "message": "Environment protection mode enabled." + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Environment_Service_API_BearerAuth": [] + } + ] + } + }, + "/environments/{environmentId}/actions/disable-protection-mode": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "post": { + "summary": "Disable Environment Protection mode.", + "operationId": "disableEnvironmentProtectionModeByEnvironmentId", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "environments:disable-protection-mode" + } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" + } + }, + "tags": [ + "Environments" + ], + "parameters": [ + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + } + ], + "responses": { + "202": { + "description": "Disable protection mode initiated", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { "type": "object", + "description": "HAL link object", "properties": { "href": { "type": "string", @@ -6587,162 +7726,11 @@ "templated": true } ] - }, - "offset": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for offset" - }, - "limit": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for limit" } }, + "required": [ + "self" + ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -6802,443 +7790,460 @@ ] } }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { + "_embedded": { "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" - } - }, - "required": [ - "total", - "limit", - "offset" - ] + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "count", - "total", - "pagination" + "_links" ] - } - ], - "examples": [ + }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Environment protection mode disabled.", + "description": "Confirmation message" + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323" + } + }, + "message": "Environment protection mode disabled." + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 - }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" } + }, + "required": [ + "error", + "message" ] }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Environment_Service_API_BearerAuth": [] + } + ] + } + }, + "/environments/{environmentId}/actions/clear-caches": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "post": { + "summary": "Clears caches for the specified environment.", + "operationId": "clearEnvironmentCachesByEnvironmentId", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "environments:clear-caches" + } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" + } + }, + "tags": [ + "Environments" + ], + "parameters": [ + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + } + ], + "requestBody": { + "description": "Clear caches request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "domains": { + "type": "array", + "description": "List of domain names to clear caches for.", + "minItems": 1, + "items": { + "type": "string", + "description": "A domain name." + } + } + }, + "required": [ + "domains" + ], + "additionalProperties": false + }, + "examples": { + "clear_caches": { + "summary": "Clear caches for specific domains", + "value": { + "domains": [ + "example.com", + "www.example.com" + ] + } + } + } + } + } + }, + "responses": { + "202": { + "description": "Cache clear started", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ { "allOf": [ { - "allOf": [ - { + "type": "object", + "properties": { + "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "_links": { + "self": { "type": "object", - "description": "HAL links for the resource", + "description": "HAL link object", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "filter": { - "allOf": [ + "href" + ], + "examples": [ { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "href": "https://api.acquia.com/v3/resources/1" }, { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + ] } }, + "required": [ + "self" + ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -7297,720 +8302,50 @@ } ] } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } + "required": [ + "_links" + ] }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" } }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" - } - } - }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" - } - } - } - ] - } - } - ] - }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "sort": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" - }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } + "required": [ + "message" + ] } ] }, { "type": "object", "properties": { - "_embedded": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "allOf": [ - { - "type": "object", - "description": "A Site resource", - "properties": { - "id": { - "type": "string", - "description": "The unique identifier of the site", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "12345678-1234-1234-1234-123456789012" - }, - "name": { - "type": "string", - "description": "The machine name of the site. Must start with a lowercase letter and contain only lowercase letters and numbers.", - "minLength": 1, - "maxLength": 14, - "pattern": "^[a-z][a-z0-9]*$", - "example": "mysite" - }, - "label": { - "type": "string", - "description": "The human-readable label of the site", - "minLength": 1, - "maxLength": 50, - "example": "My Site 1" - }, - "description": { - "type": "string", - "description": "A description of the site", - "maxLength": 512, - "example": "A production site for the marketing team." - }, - "codebase_id": { - "type": "string", - "description": "The unique identifier of the codebase this site belongs to", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "550e8400-e29b-41d4-a716-446655441210" - }, - "status": { - "type": "string", - "description": "The current lifecycle status of the site. ready indicates the site is active and operational. marked-for-deletion indicates the site has been scheduled for deletion and can still be recovered.\n", - "enum": [ - "ready", - "marked-for-deletion" - ], - "example": "ready" - }, - "delete_at": { - "type": "string", - "format": "date-time", - "description": "ISO 8601 datetime indicating when the site is scheduled for deletion. Only present when status is marked-for-deletion.", - "example": "2025-06-15T00:00:00Z" - } - }, - "required": [ - "id", - "name", - "label", - "codebase_id", - "status" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "const": "Varnish domain cache clear started.", + "description": "Confirmation message that the cache clear has been started." } - }, - "required": [ - "_embedded" - ] + } } ] }, - "examples": { - "site_collection": { - "summary": "Site collection with pagination", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sites?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/sites?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/sites?limit=2{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/sites?limit=2&offset=0{&filter}", - "templated": true - }, - "sort": { - "href": "https://api.acquia.com/v3/sites?limit=2&offset=0{&sort}", - "templated": true - }, - "next": { - "href": "https://api.acquia.com/v3/sites?limit=2&offset=2" - } - }, - "count": 2, - "total": 4, - "pagination": { - "total": 4, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890", - "name": "mysite", - "label": "My Site", - "description": "A description of my site.", - "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", - "status": "ready", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sites/f1a2b3c4-d5e6-7890-abcd-ef1234567890" - } - } - }, - { - "id": "e2b3c4d5-f6a7-8901-bcde-f12345678901", - "name": "anothersite", - "label": "Another Site", - "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", - "status": "marked-for-deletion", - "delete_at": "2025-01-01T00:00:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sites/e2b3c4d5-f6a7-8901-bcde-f12345678901" - } - } - } - ] - } + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc" } - } + }, + "message": "Varnish domain cache clear started." } } } @@ -8192,6 +8527,53 @@ } } }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, "500": { "description": "Internal Server Error", "content": { @@ -8244,58 +8626,57 @@ }, "security": [ { - "Site_Service_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] } }, - "/subscriptions/{subscriptionId}/sites": { + "/environments/{environmentId}/eips": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "summary": "Retrieves a list of sites associated with a subscription.", - "operationId": "getSitesBySubscriptionId", - "x-acquia-operation": { - "provider": { - "service": "site-service-php" - } - }, + "summary": "Retrieves a collection of egress IPs for the specified environment.", + "operationId": "getEgressIpsByEnvironmentId", "x-acquia-exposure": { - "stability": "production", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "subscriptions:list-sites" + "command": "environments:list-egress-ips" } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" } }, "tags": [ - "Sites" + "Environments" ], "parameters": [ { - "name": "subscriptionId", + "name": "environmentId", "in": "path", "required": true, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "550e8300-e29b-41d4-a716-446655441212" + "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the subscription" + "description": "Unique identifier for the environment." }, { "name": "offset", @@ -8318,33 +8699,11 @@ "minimum": 1, "example": 10 } - }, - { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" - }, - "example": "status=active;type=standard" - }, - { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" - }, - "example": "name,-created_at" } ], "responses": { "200": { - "description": "OK", + "description": "Egress IP collection", "content": { "application/hal+json": { "schema": { @@ -9204,739 +9563,6 @@ } ] }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "filter": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" - } - } - }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" - } - } - } - ] - } - } - ] - }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "sort": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" - }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - } - ] - }, { "type": "object", "properties": { @@ -9949,63 +9575,41 @@ "allOf": [ { "type": "object", - "description": "A Site resource", + "description": "Egress IP properties", "properties": { "id": { "type": "string", - "description": "The unique identifier of the site", "pattern": "^[a-zA-Z0-9-]+$", - "example": "12345678-1234-1234-1234-123456789012" - }, - "name": { - "type": "string", - "description": "The machine name of the site. Must start with a lowercase letter and contain only lowercase letters and numbers.", - "minLength": 1, - "maxLength": 14, - "pattern": "^[a-z][a-z0-9]*$", - "example": "mysite" - }, - "label": { - "type": "string", - "description": "The human-readable label of the site", - "minLength": 1, - "maxLength": 50, - "example": "My Site 1" + "description": "Unique identifier for the egress IP." }, - "description": { + "status": { "type": "string", - "description": "A description of the site", - "maxLength": 512, - "example": "A production site for the marketing team." + "description": "Current status of the egress IP." }, - "codebase_id": { + "ipv4": { "type": "string", - "description": "The unique identifier of the codebase this site belongs to", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "550e8400-e29b-41d4-a716-446655441210" + "description": "The IPv4 address." }, - "status": { - "type": "string", - "description": "The current lifecycle status of the site. ready indicates the site is active and operational. marked-for-deletion indicates the site has been scheduled for deletion and can still be recovered.\n", - "enum": [ - "ready", - "marked-for-deletion" + "ipv6": { + "type": [ + "string", + "null" ], - "example": "ready" + "description": "The IPv6 address, if assigned." }, - "delete_at": { - "type": "string", - "format": "date-time", - "description": "ISO 8601 datetime indicating when the site is scheduled for deletion. Only present when status is marked-for-deletion.", - "example": "2025-06-15T00:00:00Z" + "flags": { + "type": "object", + "description": "Status flags for the egress IP.", + "additionalProperties": { + "type": "boolean" + } } }, "required": [ "id", - "name", - "label", - "codebase_id", - "status" + "status", + "ipv4", + "flags" ] }, { @@ -10161,72 +9765,39 @@ } ] }, - "examples": { - "site_collection": { - "summary": "Site collection with pagination", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sites?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/sites?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/sites?limit=2{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/sites?limit=2&offset=0{&filter}", - "templated": true - }, - "sort": { - "href": "https://api.acquia.com/v3/sites?limit=2&offset=0{&sort}", - "templated": true - }, - "next": { - "href": "https://api.acquia.com/v3/sites?limit=2&offset=2" + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/eips?limit=25&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/eips?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/eips?limit=25{&offset}", + "templated": true + } + }, + "count": 1, + "total": 1, + "pagination": { + "total": 1, + "limit": 25, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "eip-a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "status": "active", + "ipv4": "203.0.113.10", + "ipv6": null, + "flags": { + "is_primary": true } - }, - "count": 2, - "total": 4, - "pagination": { - "total": 4, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890", - "name": "mysite", - "label": "My Site", - "description": "A description of my site.", - "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", - "status": "ready", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sites/f1a2b3c4-d5e6-7890-abcd-ef1234567890" - } - } - }, - { - "id": "e2b3c4d5-f6a7-8901-bcde-f12345678901", - "name": "anothersite", - "label": "Another Site", - "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", - "status": "marked-for-deletion", - "delete_at": "2025-01-01T00:00:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sites/e2b3c4d5-f6a7-8901-bcde-f12345678901" - } - } - } - ] } - } + ] } } } @@ -10461,46 +10032,46 @@ }, "security": [ { - "Site_Service_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] } }, - "/environments/{environmentId}/sites": { + "/environments/{environmentId}/private-network": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "summary": "Retrieves a list of sites associated with an environment.", - "operationId": "getSitesByEnvironmentId", - "x-acquia-operation": { - "provider": { - "service": "site-service-php" - } - }, + "summary": "Retrieves the private network associated with the specified environment.", + "operationId": "findPrivateNetworkByEnvironmentId", "x-acquia-exposure": { - "stability": "production", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "environments:list-sites" + "command": "environments:find-private-network" } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" } }, "tags": [ - "Sites" + "Environments" ], "parameters": [ { @@ -10509,86 +10080,497 @@ "required": true, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "0ebce493-9d09-479d-a9a8-138a206fa687" - }, - "description": "Unique identifier for the environment" - }, - { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "example": 20 - } - }, - { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "minimum": 1, - "example": 10 - } - }, - { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" - }, - "example": "status=active;type=standard" - }, - { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + "pattern": "^[a-zA-Z0-9-]+$" }, - "example": "name,-created_at" + "description": "Unique identifier for the environment." } ], "responses": { "200": { - "description": "OK", + "description": "Private network details", "content": { "application/hal+json": { "schema": { "allOf": [ { - "allOf": [ - { + "type": "object", + "description": "Private network reference properties", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the private network." + }, + "label": { + "type": [ + "string", + "null" + ], + "description": "Human-readable label for the private network." + } + }, + "required": [ + "id" + ] + }, + { + "type": "object", + "properties": { + "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "_links": { + "self": { "type": "object", - "description": "HAL links for the resource", + "description": "HAL link object", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "id": "pn-a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "label": "Production VPC", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/private-network" + } + } + } + } + }, + "links": { + "self": { + "operationId": "findPrivateNetworkByEnvironmentId", + "parameters": { + "environmentId": "$request.path.environmentId" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Environment_Service_API_BearerAuth": [] + } + ] + }, + "put": { + "summary": "Associates the specified environment with a private network.", + "operationId": "saveEnvironmentPrivateNetworkByEnvironmentId", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "environments:associate-private-network" + } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" + } + }, + "tags": [ + "Environments" + ], + "parameters": [ + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + } + ], + "requestBody": { + "description": "Associate private network request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "private_network_id": { + "type": "string", + "description": "The identifier of the private network to associate with this environment." + } + }, + "required": [ + "private_network_id" + ], + "additionalProperties": false, + "minProperties": 1 + }, + "examples": { + "associate": { + "summary": "Associate a private network", + "value": { + "private_network_id": "pn-a1b2c3d4-e5f6-7890-abcd-ef1234567890" + } + } + } + } + } + }, + "responses": { + "202": { + "description": "Private network association started", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], "description": "The target URI of the link (can be a URI or URI template)" }, "templated": { @@ -10709,206 +10691,381 @@ { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "_embedded" + "message" ] } ] }, { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Associating private network started.", + "description": "Confirmation message that the association has been started." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/private-network" + } + }, + "message": "Associating private network started." + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Environment_Service_API_BearerAuth": [] + } + ] + }, + "delete": { + "summary": "Disassociates the specified environment from its private network.", + "operationId": "deleteEnvironmentPrivateNetworkByEnvironmentId", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "environments:disassociate-private-network" + } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" + } + }, + "tags": [ + "Environments" + ], + "parameters": [ + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + } + ], + "responses": { + "202": { + "description": "Private network disassociation started", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ { "type": "object", "properties": { "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "prev": { - "description": "Link to the previous page (templated)", + "self": { "type": "object", + "description": "HAL link object", "properties": { "href": { "type": "string", @@ -10963,220 +11120,11 @@ "templated": true } ] - }, - "next": { - "description": "Link to the next page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "offset": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for offset" - }, - "limit": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for limit" } }, + "required": [ + "self" + ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -11236,1251 +11184,563 @@ ] } }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { + "_embedded": { "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" - } - }, - "required": [ - "total", - "limit", - "offset" - ] + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "count", - "total", - "pagination" + "_links" ] - } - ], - "examples": [ + }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } - } - } - ] + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Disassociating environment from private network started.", + "description": "Confirmation message that the disassociation has been started." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/private-network" + } + }, + "message": "Disassociating environment from private network started." + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Environment_Service_API_BearerAuth": [] + } + ] + } + }, + "/environments/{environmentId}/trusted-proxies": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Retrieves the trusted proxy configuration for the specified environment.", + "operationId": "findTrustedProxiesByEnvironmentId", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "environments:find-trusted-proxies" + } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" + } + }, + "tags": [ + "Environments" + ], + "parameters": [ + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + } + ], + "responses": { + "200": { + "description": "Trusted proxy configuration details", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "description": "Trusted proxy configuration properties", + "properties": { + "cidrs_ipv4": { + "type": "array", + "description": "List of trusted IPv4 CIDR blocks.", + "items": { + "type": "string" } }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] + "cidrs_ipv6": { + "type": "array", + "description": "List of trusted IPv6 CIDR blocks.", + "items": { + "type": "string" } }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 - }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } + "associated_cdns": { + "type": "object", + "description": "Map of CDN configurations associated with this environment, keyed by CDN name.", + "additionalProperties": { + "type": "object", + "properties": { + "label": { + "type": "string", + "description": "Display label for the CDN." }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } - } + "is_enabled": { + "type": "boolean", + "description": "Whether the CDN is enabled." } + }, + "required": [ + "label", + "is_enabled" ] } } + }, + "required": [ + "cidrs_ipv4", + "cidrs_ipv6", + "associated_cdns" ] }, { - "allOf": [ - { - "allOf": [ - { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { "type": "object", + "description": "HAL link object", "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" } - }, - "required": [ - "self" ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "description": "The target URI of the link (can be a URI or URI template)" }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - }, - "required": [ - "_embedded" ] } - ] + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - { + "_embedded": { "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "filter": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" - } - } - }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" - } - } - } - ] - } - } - ] - }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "sort": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" - }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - } - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "allOf": [ - { - "type": "object", - "description": "A Site resource", - "properties": { - "id": { - "type": "string", - "description": "The unique identifier of the site", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "12345678-1234-1234-1234-123456789012" - }, - "name": { - "type": "string", - "description": "The machine name of the site. Must start with a lowercase letter and contain only lowercase letters and numbers.", - "minLength": 1, - "maxLength": 14, - "pattern": "^[a-z][a-z0-9]*$", - "example": "mysite" - }, - "label": { - "type": "string", - "description": "The human-readable label of the site", - "minLength": 1, - "maxLength": 50, - "example": "My Site 1" - }, - "description": { - "type": "string", - "description": "A description of the site", - "maxLength": 512, - "example": "A production site for the marketing team." - }, - "codebase_id": { - "type": "string", - "description": "The unique identifier of the codebase this site belongs to", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "550e8400-e29b-41d4-a716-446655441210" - }, - "status": { - "type": "string", - "description": "The current lifecycle status of the site. ready indicates the site is active and operational. marked-for-deletion indicates the site has been scheduled for deletion and can still be recovered.\n", - "enum": [ - "ready", - "marked-for-deletion" - ], - "example": "ready" - }, - "delete_at": { - "type": "string", - "format": "date-time", - "description": "ISO 8601 datetime indicating when the site is scheduled for deletion. Only present when status is marked-for-deletion.", - "example": "2025-06-15T00:00:00Z" - } - }, - "required": [ - "id", - "name", - "label", - "codebase_id", - "status" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - } - } - }, - "required": [ - "items" - ] + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "_embedded" + "_links" ] } ] }, - "examples": { - "site_collection": { - "summary": "Site collection with pagination", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sites?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/sites?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/sites?limit=2{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/sites?limit=2&offset=0{&filter}", - "templated": true - }, - "sort": { - "href": "https://api.acquia.com/v3/sites?limit=2&offset=0{&sort}", - "templated": true - }, - "next": { - "href": "https://api.acquia.com/v3/sites?limit=2&offset=2" - } - }, - "count": 2, - "total": 4, - "pagination": { - "total": 4, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890", - "name": "mysite", - "label": "My Site", - "description": "A description of my site.", - "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", - "status": "ready", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sites/f1a2b3c4-d5e6-7890-abcd-ef1234567890" - } - } - }, - { - "id": "e2b3c4d5-f6a7-8901-bcde-f12345678901", - "name": "anothersite", - "label": "Another Site", - "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", - "status": "marked-for-deletion", - "delete_at": "2025-01-01T00:00:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sites/e2b3c4d5-f6a7-8901-bcde-f12345678901" - } - } - } - ] - } + "example": { + "cidrs_ipv4": [ + "203.0.113.0/24" + ], + "cidrs_ipv6": [], + "associated_cdns": { + "cloudflare": { + "label": "Cloudflare", + "is_enabled": true + } + }, + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/trusted-proxies" } } } } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + }, + "links": { + "self": { + "operationId": "findTrustedProxiesByEnvironmentId", + "parameters": { + "environmentId": "$request.path.environmentId" } } } @@ -12678,19 +11938,13 @@ }, "security": [ { - "Site_Service_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] - } - }, - "/subscriptions/{subscriptionUuid}/domains": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "get": { - "operationId": "getDomainsBySubscriptionUuid", + }, + "put": { + "summary": "Updates the trusted proxy configuration for the specified environment.", + "operationId": "updateTrustedProxiesByEnvironmentId", "x-acquia-exposure": { "channels": { "rest": { @@ -12698,83 +11952,97 @@ }, "cli": { "enabled": true, - "command": "subscriptions:list-domains" + "command": "environments:update-trusted-proxies" } }, "stability": "development", "audience": [ "public" - ] + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } }, "x-acquia-operation": { "provider": { - "service": "cdn-service" + "service": "environment-service" } }, "tags": [ - "CDNs" + "Environments" ], - "summary": "Retrieves a collection of CDN domains for a subscription", - "description": "Retrieves a paginated list of CDN domains for the specified subscription.\n\n**Filtering:**\n - Format: `field=value` or `fieldvalue`\n - AND logic: semicolon (`;`) — `status=active;application_name=my-app`\n - OR logic: comma (`,`) — `status=active,status=pending`\n\n**Sorting:**\n- Format: Comma-delimited fields. Prefix with `-` for descending.\n- Example: `domain,-created_at`\n", "parameters": [ { - "name": "subscriptionUuid", + "name": "environmentId", "in": "path", "required": true, - "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } - }, - { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "example": 20 - } - }, - { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "minimum": 1, - "example": 10 - } - }, - { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" - }, - "example": "status=active;type=standard" - }, - { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" }, - "example": "name,-created_at" + "description": "Unique identifier for the environment." } ], + "requestBody": { + "description": "Update trusted proxies request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "cidrs_ipv4": { + "type": "array", + "description": "List of trusted IPv4 CIDR blocks.", + "items": { + "type": "string", + "description": "An IPv4 CIDR block (e.g. \"203.0.113.0/24\")." + } + }, + "cidrs_ipv6": { + "type": "array", + "description": "List of trusted IPv6 CIDR blocks.", + "items": { + "type": "string", + "description": "An IPv6 CIDR block (e.g. \"2001:db8::/32\")." + } + }, + "associated_cdns": { + "type": "array", + "description": "List of CDN names to associate with this environment.", + "items": { + "type": "string", + "enum": [ + "akamai", + "cloudflare", + "fastly" + ] + } + } + }, + "additionalProperties": false, + "minProperties": 1 + }, + "examples": { + "update": { + "summary": "Update trusted proxy configuration", + "value": { + "cidrs_ipv4": [ + "203.0.113.0/24" + ], + "cidrs_ipv6": [], + "associated_cdns": [ + "cloudflare" + ] + } + } + } + } + } + }, "responses": { "200": { - "description": "OK", + "description": "Trusted proxy configuration updated", "content": { "application/hal+json": { "schema": { @@ -12922,23 +12190,580 @@ { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Trusted Proxies updated successfully.", + "description": "Confirmation message that the configuration has been updated." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/trusted-proxies" + } + }, + "message": "Trusted Proxies updated successfully." + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Environment_Service_API_BearerAuth": [] + } + ] + } + }, + "/environments/{environmentId}/deployments": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Retrieves a collection of deployments for the specified environment.", + "operationId": "getDeploymentsByEnvironmentId", + "tags": [ + "Deployments" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "environments:list-deployments" + } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" + } + }, + "parameters": [ + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + }, + { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "status=active;type=standard" + }, + { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, "required": [ "_embedded" ] @@ -14379,68 +14204,89 @@ "allOf": [ { "type": "object", - "description": "CDN domain resource.", + "description": "Deployment properties", "properties": { - "domain": { - "type": "string", - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]?(\\.[a-zA-Z]{2,})+$", - "description": "The fully qualified domain name." - }, - "subscription_uuid": { + "id": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$", - "description": "The unique identifier of the subscription the domain belongs to." + "description": "Unique identifier for the deployment." }, "environment_id": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$", - "description": "The environment identifier associated with the domain." - }, - "application_name": { - "type": "string", - "description": "The name of the application associated with the domain." + "description": "Identifier of the environment this deployment belongs to." }, "status": { "type": "string", - "description": "The current status of the domain.", + "description": "Current status of the deployment.", "enum": [ - "connecting-to-edge", - "domain-validation-pending", - "ready-for-dns-repointing", - "configuration-failed", - "configured" + "waiting", + "received", + "started", + "done", + "failed", + "error", + "killed" ] }, - "ownership_validation_cname": { + "code_reference": { "type": "string", - "description": "The CNAME record that must be created on the domain's DNS to validate ownership." + "description": "The code reference (e.g. branch or tag) deployed." }, - "bandwidth_usage_tb": { - "type": "number", - "format": "float", - "description": "The bandwidth usage for the domain in terabytes." + "run_hooks": { + "type": "boolean", + "description": "Whether deployment hooks were run." + }, + "hooks_argument": { + "type": [ + "string", + "null" + ], + "description": "Additional arguments passed to deployment hooks." }, "created_at": { "type": "string", "format": "date-time", - "description": "The timestamp when the domain was created." + "description": "Timestamp when the deployment was created." }, - "updated_at": { - "type": "string", + "started_at": { + "type": [ + "string", + "null" + ], "format": "date-time", - "description": "The timestamp when the domain was last updated." + "description": "Timestamp when the deployment started." + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "Timestamp when the deployment completed." + }, + "sender_id": { + "type": [ + "string", + "null" + ], + "description": "Identifier of the user or system that initiated the deployment." + }, + "logs": { + "type": [ + "string", + "null" + ], + "description": "Deployment log output." } }, "required": [ - "domain", - "subscription_uuid", + "id", "environment_id", "status", - "application_name", - "ownership_validation_cname", - "bandwidth_usage_tb", - "created_at", - "updated_at" + "code_reference", + "run_hooks", + "created_at" ] }, { @@ -14597,71 +14443,82 @@ ] }, "examples": { - "domains_response": { - "summary": "Domain collection with pagination", + "deployment_response": { + "summary": "Deployment collection with pagination", "value": { "_links": { "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?limit=2&offset=0" + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2&offset=2" }, "limit": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?offset=0{&limit}", + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?offset=2{&limit}", "templated": true }, "offset": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?limit=2{&offset}", + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2{&offset}", "templated": true }, "filter": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?limit=2&offset=0{&filter}", + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2&offset=2{&filter}", "templated": true }, "sort": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?limit=2&offset=0{&sort}", + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2&offset=2{&sort}", "templated": true }, + "prev": { + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2&offset=0" + }, "next": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?limit=2&offset=2" + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2&offset=4" } }, "count": 2, - "total": 50, + "total": 6, "pagination": { - "total": 50, + "total": 6, "limit": 2, - "offset": 0 + "offset": 2 }, "_embedded": { "items": [ { - "domain": "example.com", - "subscription_uuid": "12345678-1234-1234-1234-123456789012", - "environment_id": "0c3f0f5f-5727-4838-9459-2d90ee1cf7c1", - "application_name": "my-application", - "status": "configured", - "created_at": "2024-01-15T10:30:00Z", - "updated_at": "2024-01-20T15:45:00Z", - "ownership_validation_cname": "_acme-challenge.example.com", - "bandwidth_usage_tb": 1.25, + "id": "e0c9dff7-56b6-4c0d-bad0-0e6593f66cd3", + "environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", + "status": "done", + "code_reference": "tags/v1.0.0", + "run_hooks": true, + "hooks_argument": null, + "sender_id": null, + "created_at": "2025-04-01T13:01:06.603Z", + "started_at": "2025-04-01T13:01:10.123Z", + "completed_at": "2025-04-01T13:05:00.000Z", "_links": { "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains/example.com" + "href": "https://api.acquia.com/v3/deployments/e0c9dff7-56b6-4c0d-bad0-0e6593f66cd3" + }, + "environment": { + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323" } } }, { - "domain": "test.example.org", - "subscription_uuid": "12345678-1234-1234-1234-123456789012", - "environment_id": "1d4f1f6f-6838-5949-a560-3e01ff2cf8d2", - "application_name": "test-application", - "status": "connecting-to-edge", - "created_at": "2024-01-18T08:15:00Z", - "ownership_validation_cname": "_acme-challenge.example.com", - "bandwidth_usage_tb": 1.25, - "updated_at": "2024-01-18T08:15:00Z", + "id": "f1dae0f8-67c7-5d1e-cbe1-1f7604f77de4", + "environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", + "status": "failed", + "code_reference": "tags/v0.9.0", + "run_hooks": false, + "hooks_argument": null, + "sender_id": null, + "created_at": "2025-03-28T09:15:00.000Z", + "started_at": "2025-03-28T09:15:05.000Z", + "completed_at": "2025-03-28T09:18:00.000Z", "_links": { "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains/test.example.org" + "href": "https://api.acquia.com/v3/deployments/f1dae0f8-67c7-5d1e-cbe1-1f7604f77de4" + }, + "environment": { + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323" } } } @@ -14902,21 +14759,16 @@ }, "security": [ { - "CDN_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] - } - }, - "/subscriptions/{subscriptionUuid}/domains/{domainName}": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "get": { - "summary": "Retrieves a domain by domain name.", - "description": "Retrieves the full details of a CDN domain within a subscription, identified by its fully qualified domain name.", - "operationId": "findDomainBySubscriptionUuidAndDomainName", + }, + "post": { + "summary": "Starts a deployment for the specified environment.", + "operationId": "createDeploymentByEnvironmentId", + "tags": [ + "Deployments" + ], "x-acquia-exposure": { "channels": { "rest": { @@ -14924,115 +14776,608 @@ }, "cli": { "enabled": true, - "command": "subscriptions:find-domain" + "command": "environments:create-deployment" } }, "stability": "development", "audience": [ "public" - ] + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } }, "x-acquia-operation": { "provider": { - "service": "cdn-service" + "service": "environment-service" } }, - "tags": [ - "CDNs" - ], "parameters": [ { - "name": "subscriptionUuid", + "name": "environmentId", "in": "path", "required": true, - "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } - }, - { - "name": "domainName", - "in": "path", - "required": true, - "description": "The fully qualified domain name.", - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]?(\\.[a-zA-Z]{2,})+$" - } + }, + "description": "Unique identifier for the environment." } ], + "requestBody": { + "description": "Deployment start request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "run_hooks": { + "type": "boolean", + "description": "Whether to run deployment hooks." + }, + "code_reference": { + "type": "string", + "description": "The code reference (branch or tag) to deploy." + }, + "hooks_argument": { + "type": "string", + "description": "Additional arguments passed to deployment hooks." + } + }, + "required": [ + "run_hooks", + "code_reference" + ], + "additionalProperties": false, + "minProperties": 1 + }, + "examples": { + "start_deployment": { + "summary": "Start a deployment", + "description": "Starts a deployment for the specified environment.", + "value": { + "run_hooks": true, + "code_reference": "release-2025-01-15", + "hooks_argument": "--migrate --clear-cache" + } + } + } + } + } + }, "responses": { - "200": { - "description": "OK", + "202": { + "description": "Deployment started", "content": { "application/hal+json": { "schema": { "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, { "type": "object", - "description": "CDN domain resource.", "properties": { - "domain": { + "message": { "type": "string", - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]?(\\.[a-zA-Z]{2,})+$", - "description": "The fully qualified domain name." + "const": "Deployment started.", + "description": "Confirmation message that the deployment has been started." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/deployments/e0c9dff7-56b6-4c0d-bad0-0e6593f66cd3" + } + }, + "message": "Deployment started." + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "subscription_uuid": { + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "The unique identifier of the subscription the domain belongs to." + "const": "unauthorized" }, - "environment_id": { + "message": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "The environment identifier associated with the domain." + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "application_name": { + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { "type": "string", - "description": "The name of the application associated with the domain." + "const": "forbidden" }, - "status": { + "message": { "type": "string", - "description": "The current status of the domain.", - "enum": [ - "connecting-to-edge", - "domain-validation-pending", - "ready-for-dns-repointing", - "configuration-failed", - "configured" - ] + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "ownership_validation_cname": { + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { "type": "string", - "description": "The CNAME record that must be created on the domain's DNS to validate ownership." + "const": "not_found" }, - "bandwidth_usage_tb": { - "type": "number", - "format": "float", - "description": "The bandwidth usage for the domain in terabytes." + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "created_at": { + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { "type": "string", - "format": "date-time", - "description": "The timestamp when the domain was created." + "const": "conflict" }, - "updated_at": { + "message": { "type": "string", - "format": "date-time", - "description": "The timestamp when the domain was last updated." + "example": "The requested operation is invalid or cannot be completed." } }, "required": [ - "domain", - "subscription_uuid", - "environment_id", - "status", - "application_name", - "ownership_validation_cname", - "bandwidth_usage_tb", - "created_at", - "updated_at" + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Environment_Service_API_BearerAuth": [] + } + ] + } + }, + "/environments/{environmentId}/code-deploy": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Retrieves the code deploy concurrency setting for the environment.", + "operationId": "findCodeDeployByEnvironmentId", + "tags": [ + "Code Deploys" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "environments:find-code-deploy" + } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" + } + }, + "parameters": [ + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "concurrency": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "Maximum number of concurrent code deploys allowed for the environment." + } + }, + "required": [ + "concurrency" ] }, { @@ -15176,18 +15521,10 @@ ] }, "example": { - "domain": "example.com", - "subscription_uuid": "12345678-1234-1234-1234-123456789012", - "environment_id": "0c3f0f5f-5727-4838-9459-2d90ee1cf7c1", - "application_name": "my-application", - "status": "configured", - "ownership_validation_cname": "_acme-challenge.example.com", - "bandwidth_usage_tb": 1.25, - "created_at": "2024-01-15T10:30:00Z", - "updated_at": "2024-01-20T15:45:00Z", + "concurrency": 5, "_links": { "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains/example.com" + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/code-deploy" } } } @@ -15195,10 +15532,9 @@ }, "links": { "self": { - "operationId": "findDomainBySubscriptionUuidAndDomainName", + "operationId": "findCodeDeployByEnvironmentId", "parameters": { - "subscriptionUuid": "$request.path.subscriptionUuid", - "domainName": "$request.path.domainName" + "environmentId": "$request.path.environmentId" } } } @@ -15396,19 +15732,16 @@ }, "security": [ { - "CDN_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] - } - }, - "/subscriptions/{subscriptionUuid}/domains/{domainName}/actions/provision": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "post": { - "operationId": "provisionDomainBySubscriptionUuidAndDomainName", + }, + "put": { + "summary": "Updates the code deploy concurrency setting for the environment.", + "operationId": "updateCodeDeployByEnvironmentId", + "tags": [ + "Code Deploys" + ], "x-acquia-exposure": { "channels": { "rest": { @@ -15416,75 +15749,70 @@ }, "cli": { "enabled": true, - "command": "subscriptions:provision-domain" + "command": "environments:update-code-deploy" } }, "stability": "development", "audience": [ "public" - ] + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } }, "x-acquia-operation": { "provider": { - "service": "cdn-service" + "service": "environment-service" } }, - "tags": [ - "CDNs" - ], - "summary": "Provisions a domain for CDN services", - "description": "Provisions a domain for CDN services within a subscription by associating it with an environment.", "parameters": [ { - "name": "subscriptionUuid", + "name": "environmentId", "in": "path", "required": true, - "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } - }, - { - "name": "domainName", - "in": "path", - "required": true, - "description": "The fully qualified domain name.", - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]?(\\.[a-zA-Z]{2,})+$" - } + }, + "description": "Unique identifier for the environment." } ], "requestBody": { - "description": "Domain CDN provisioning request body", - "required": true, + "description": "Code deploy concurrency update request body", "content": { "application/json": { "schema": { "type": "object", "properties": { - "environment_id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "The environment identifier that the domain will be associated with for purging purposes." + "concurrency": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "Maximum number of concurrent code deploys allowed for the environment." } }, - "additionalProperties": false, "required": [ - "environment_id" + "concurrency" ], + "additionalProperties": false, "minProperties": 1 }, - "example": { - "environment_id": "0c3f0f5f-5727-4838-9459-2d90ee1cf7c1" + "examples": { + "update_concurrency": { + "summary": "Update code deploy concurrency", + "description": "Sets the maximum concurrent code deploys for the environment.", + "value": { + "concurrency": 10 + } + } } } } }, "responses": { - "202": { - "description": "Accepted - Provisioning in progress", + "200": { + "description": "Code deploy concurrency setting updated", "content": { "application/hal+json": { "schema": { @@ -15648,8 +15976,8 @@ "properties": { "message": { "type": "string", - "const": "The domain provisioning has been started.", - "description": "Confirmation message" + "const": "Code deploy settings updated successfully.", + "description": "Confirmation message that the concurrency setting has been updated." } } } @@ -15658,10 +15986,10 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains/example.com" + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/code-deploy" } }, - "message": "The domain provisioning has been started." + "message": "Code deploy settings updated successfully." } } } @@ -15942,19 +16270,20 @@ }, "security": [ { - "CDN_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] } }, - "/subscriptions/{subscriptionUuid}/domains/{domainName}/actions/deprovision": { + "/environments/{environmentId}/site-instances": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "post": { - "operationId": "deprovisionDomainBySubscriptionUuidAndDomainName", + "summary": "Associates a site with the specified environment.", + "operationId": "createSiteInstanceByEnvironmentId", "x-acquia-exposure": { "channels": { "rest": { @@ -15962,49 +16291,81 @@ }, "cli": { "enabled": true, - "command": "subscriptions:deprovision-domain" + "command": "environments:create-site-instance" } }, "stability": "development", "audience": [ "public" - ] + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } }, "x-acquia-operation": { "provider": { - "service": "cdn-service" + "service": "environment-service" } }, "tags": [ - "CDNs" + "Site Instances" ], - "summary": "Deprovisions a domain from CDN services", - "description": "Deprovisions a domain for CDN services within a subscription.", "parameters": [ { - "name": "subscriptionUuid", + "name": "environmentId", "in": "path", "required": true, - "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } - }, - { - "name": "domainName", - "in": "path", - "required": true, - "description": "The fully qualified domain name.", - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]?(\\.[a-zA-Z]{2,})+$" - } + }, + "description": "Unique identifier for the environment." } ], + "requestBody": { + "description": "Create site instance request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "site_id": { + "type": "string", + "description": "The UUID of the site to associate with this environment." + }, + "source_environment_id": { + "type": "string", + "description": "The UUID of the environment to copy files and database from during creation." + }, + "source_site_id": { + "type": "string", + "description": "The UUID of the source site to copy files from during creation." + }, + "hook_arguments": { + "type": "string", + "description": "Additional arguments to pass to deployment hooks during creation." + } + }, + "required": [ + "site_id" + ], + "additionalProperties": false + }, + "examples": { + "create": { + "summary": "Associate a site with an environment", + "value": { + "site_id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc" + } + } + } + } + } + }, "responses": { "202": { - "description": "Accepted - Deprovisioning in progress", + "description": "Site instance creation started", "content": { "application/hal+json": { "schema": { @@ -16168,8 +16529,8 @@ "properties": { "message": { "type": "string", - "const": "The domain deprovisioning has been started.", - "description": "Confirmation message" + "const": "Site instance creation started.", + "description": "Confirmation message that site association has been started." } } } @@ -16178,40 +16539,76 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains/example.com" + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323" } }, - "message": "The domain deprovisioning has been started." + "message": "Site instance creation started." } } } }, - "401": { - "description": "Unauthorized", + "400": { + "description": "Validation Error", "content": { "application/json": { "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] + "type": "object", + "properties": { + "error": { + "type": "string" }, - { + "message": { "type": "object", - "properties": { - "error": { - "type": "string", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", "const": "unauthorized" }, "message": { @@ -16426,19 +16823,23 @@ }, "security": [ { - "CDN_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] } }, - "/environments/{environmentId}/actions/purge-cdn": { + "/environments/{environmentId}/site-instances/actions/reorder": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "post": { - "operationId": "purgeCdnByEnvironmentId", + "summary": "Updates the priority order of site instances for the environment.", + "operationId": "reorderSiteInstancesByEnvironmentId", + "tags": [ + "Site Instances" + ], "x-acquia-exposure": { "channels": { "rest": { @@ -16446,113 +16847,76 @@ }, "cli": { "enabled": true, - "command": "environments:purge-cdn" + "command": "environments:reorder-site-instances" } }, "stability": "development", "audience": [ "public" - ] + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } }, "x-acquia-operation": { "provider": { - "service": "cdn-service" + "service": "environment-service" } }, - "tags": [ - "CDNs" - ], - "summary": "Creates a CDN cache purge request", - "description": "Creates a request to purge cached content from the CDN for the specified environment.\n\n**Resource Types** (specified in the request body):\n- `urls` - Purge specific URLs\n- `tags` - Purge by cache tags\n- `domains` - Purge entire domains\n- `everything` - Purge all content in the environment\n", "parameters": [ { "name": "environmentId", "in": "path", "required": true, - "description": "The unique identifier of the environment.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } + }, + "description": "Unique identifier for the environment." } ], "requestBody": { - "description": "Purge request body", - "required": true, + "description": "Site instances reorder request body", "content": { "application/json": { "schema": { "type": "object", "properties": { - "resource_type": { - "type": "string", - "description": "The type of resource to purge.", - "enum": [ - "tags", - "urls", - "domains", - "everything" - ] - }, - "values": { + "site_instance_ids": { "type": "array", - "description": "List of values to purge based on the resource type.\nRequired when `resource_type` is not `everything`.\n", + "description": "List of site instance IDs in the desired priority order.", "items": { - "type": "string" - }, - "minItems": 1 + "type": "string", + "description": "Site instance identifier in the format {siteId}.{environmentId} (dot-separated site and environment UUIDs)." + } } }, - "additionalProperties": false, "required": [ - "resource_type" + "site_instance_ids" ], + "additionalProperties": false, "minProperties": 1 }, "examples": { - "purge_urls": { - "summary": "Purge specific URLs", - "value": { - "resource_type": "urls", - "values": [ - "https://example.com/page1", - "https://example.com/page2" - ] - } - }, - "purge_tags": { - "summary": "Purge by cache tags", - "value": { - "resource_type": "tags", - "values": [ - "product-123", - "category-456" - ] - } - }, - "purge_domains": { - "summary": "Purge entire domains", + "reorder": { + "summary": "Reorder site instances", + "description": "Provides the desired order of site instance IDs for the environment.", "value": { - "resource_type": "domains", - "values": [ - "example.com", - "test.example.org" + "site_instance_ids": [ + "3e8ecbec-ea7c-4260-8414-ef2938c859bc.a0c9dff7-56b6-4c0d-bad0-0e6593f66cd3", + "b1d8e2f8-67c7-5d1e-cbe1-1f7604f77de4.c2e9f3a9-78d8-6e2f-dcf2-2a8715a88ef5", + "d3fa04ba-89e9-4f3a-edf3-3b9826b99fa6.e4ab15cb-90fa-4a4b-fea4-4c0937c00ab7" ] } - }, - "purge_everything": { - "summary": "Purge everything", - "value": { - "resource_type": "everything" - } } } } } }, "responses": { - "202": { - "description": "Accepted - Purge request submitted", + "200": { + "description": "Site instances reordered successfully", "content": { "application/hal+json": { "schema": { @@ -16716,8 +17080,8 @@ "properties": { "message": { "type": "string", - "const": "The purge request has been submitted.", - "description": "Confirmation message" + "const": "Site instances reordered successfully.", + "description": "Confirmation message that the site instances have been reordered." } } } @@ -16726,10 +17090,10 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/environments/0c3f0f5f-5727-4838-9459-2d90ee1cf7c1/actions/purge-cdn" + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/site-instances" } }, - "message": "The purge request has been submitted." + "message": "Site instances reordered successfully." } } } @@ -17010,19 +17374,20 @@ }, "security": [ { - "CDN_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] } }, - "/subscriptions/{subscriptionUuid}/config/security/rulesets": { + "/site-instances/{siteId}.{environmentId}": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "operationId": "getSecurityRuleSetsBySubscriptionUuid", + "summary": "Get site instance details.", + "operationId": "findSiteInstanceBySiteIdAndEnvironmentId", "x-acquia-exposure": { "channels": { "rest": { @@ -17030,61 +17395,641 @@ }, "cli": { "enabled": true, - "command": "subscriptions:list-security-rule-sets" + "command": "site-instances:find" } }, "stability": "development", "audience": [ "public" - ] + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } }, "x-acquia-operation": { "provider": { - "service": "cdn-service" + "service": "environment-service" } }, "tags": [ - "CDNs" + "Site Instances" ], - "summary": "Retrieves a collection of security rulesets.", - "description": "Retrieves security rulesets for a subscription.", "parameters": [ { - "name": "subscriptionUuid", + "name": "siteId", "in": "path", "required": true, - "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } + }, + "description": "Unique identifier for the site." }, { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, + "name": "environmentId", + "in": "path", + "required": true, "schema": { - "type": "integer", - "minimum": 0, - "example": 20 + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + } + ], + "responses": { + "200": { + "description": "Site Instance details", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "description": "Site Instance properties", + "properties": { + "site_id": { + "type": "string", + "description": "The unique identifier of the site", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "environment_id": { + "type": "string", + "description": "The unique identifier of the environment", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "status": { + "type": "string", + "description": "The current status of the site instance", + "enum": [ + "active", + "creating", + "create-failed", + "updating", + "update-failed", + "deleting", + "deleted", + "delete-failed" + ] + }, + "health_status": { + "type": "object", + "description": "Health status information for the site instance", + "properties": { + "code": { + "type": "string", + "description": "Health status code" + }, + "summary": { + "type": "string", + "description": "Summary of the health status" + }, + "details": { + "type": "string", + "description": "Detailed health status information" + } + }, + "required": [ + "code", + "summary", + "details" + ] + }, + "domains": { + "type": "array", + "description": "List of domains associated with the site instance. Each entry carries the same values as the corresponding domain read.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The domain name." + }, + "is_managed": { + "type": "boolean", + "description": "Whether the domain is managed by Acquia. Carries the same value as the `is_managed` property of the domain reads, including when `type` is absent." + }, + "type": { + "type": "string", + "description": "The type of the domain. Carries the same value space as the `type` property of the domain reads. Absent when the platform holds no recorded type for the domain, or reports one this API does not recognise.", + "enum": [ + "custom", + "environment-pattern", + "codebase-pattern", + "acquia", + "launch-group" + ], + "example": "custom" + } + }, + "required": [ + "name", + "is_managed" + ] + } + }, + "deployment_order": { + "type": [ + "integer", + "null" + ], + "description": "The order in which this site instance is deployed relative to others.", + "example": 1 + }, + "delete_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "The scheduled deletion date-time for this site instance, if set." + }, + "date_marked_for_deletion": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "The date-time when this site instance was marked for deletion." + }, + "deployed_vcs_ref": { + "type": "string", + "description": "The VCS reference (e.g. branch or tag) that is currently deployed on this site instance.", + "example": "MT1.0.10" + }, + "code_hash": { + "type": "string", + "description": "The commit hash of the code currently deployed on this site instance.", + "example": "f70f0eaffa3bdde6622d2a3aca1a5eb2034dd899" + }, + "protection_mode": { + "type": [ + "object", + "null" + ], + "description": "The current protection mode of the site instance", + "properties": { + "is_enabled": { + "type": "boolean", + "description": "Indicates whether the protection mode is enabled for the site instance" + }, + "is_inherited": { + "type": "boolean", + "description": "Indicates whether the protection mode is inherited from the environment" + } + }, + "required": [ + "is_enabled", + "is_inherited" + ] + } + }, + "required": [ + "site_id", + "environment_id", + "status", + "health_status", + "domains" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323" + } + }, + "site_id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", + "status": "active", + "health_status": { + "code": "OK", + "summary": "The health status is OK.", + "details": "The site instance is active" + }, + "domains": [ + { + "name": "example.com", + "is_managed": false, + "type": "custom" + }, + { + "name": "example-2.com", + "is_managed": true, + "type": "acquia" + } + ], + "protection_mode": { + "is_enabled": true, + "is_inherited": true + }, + "deployment_order": 2, + "deployed_vcs_ref": "main", + "code_hash": "f70f0eaffa3bdde6622d2a3aca1a5eb2034dd899" + } + } + }, + "links": { + "self": { + "operationId": "findSiteInstanceBySiteIdAndEnvironmentId", + "parameters": { + "siteId": "$request.path.siteId", + "environmentId": "$request.path.environmentId" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Environment_Service_API_BearerAuth": [] + } + ] + }, + "delete": { + "summary": "Dissociates a site and environment with no grace period.", + "operationId": "deleteSiteInstanceBySiteIdAndEnvironmentId", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "site-instances:delete" } }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" + } + }, + "tags": [ + "Site Instances" + ], + "parameters": [ { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, + "name": "siteId", + "in": "path", + "required": true, "schema": { - "type": "integer", - "minimum": 1, - "example": 10 - } + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the site." + }, + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." } ], "responses": { - "200": { - "description": "OK", + "202": { + "description": "Site instance deletion started", "content": { "application/hal+json": { "schema": { @@ -17232,264 +18177,390 @@ { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "_embedded" + "message" ] } ] }, { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Site instance deletion started.", + "description": "Confirmation message that the deletion has been started." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323" + } + }, + "message": "Site instance deletion started." + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "prev": { - "description": "Link to the previous page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "next": { - "description": "Link to the next page (templated)", + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Environment_Service_API_BearerAuth": [] + } + ] + } + }, + "/site-instances/{siteId}.{environmentId}/files": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "post": { + "summary": "Copies files from one environment to another for the specified site instance.", + "operationId": "copySiteInstanceFilesBySiteIdAndEnvironmentId", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "site-instances:copy-files" + } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" + } + }, + "tags": [ + "Site Instances" + ], + "parameters": [ + { + "name": "siteId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the site." + }, + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + } + ], + "requestBody": { + "description": "Copy site instance files request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "source_environment_id": { + "type": "string", + "description": "The UUID of the environment to copy files from." + } + }, + "required": [ + "source_environment_id" + ], + "additionalProperties": false + }, + "examples": { + "copy_files": { + "summary": "Copy files from another environment", + "value": { + "source_environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323" + } + } + } + } + } + }, + "responses": { + "202": { + "description": "File copy started", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { "type": "object", + "description": "HAL link object", "properties": { "href": { "type": "string", @@ -17544,162 +18615,11 @@ "templated": true } ] - }, - "offset": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for offset" - }, - "limit": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for limit" } }, + "required": [ + "self" + ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -17759,439 +18679,49 @@ ] } }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { + "_embedded": { "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" - } - }, - "required": [ - "total", - "limit", - "offset" - ] + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "count", - "total", - "pagination" + "_links" ] - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 - }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "required": [ + "message" + ] } ] }, { "type": "object", "properties": { - "_embedded": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "allOf": [ - { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 1, - "description": "The unique identifier of the security ruleset." - }, - "name": { - "type": "string", - "description": "The display name of the security ruleset." - }, - "is_enabled": { - "type": "boolean", - "description": "Indicates whether the security ruleset is enabled." - }, - "description": { - "type": "string", - "description": "The description of the security ruleset." - }, - "type": { - "type": "string", - "description": "The type of the security ruleset.", - "enum": [ - "owasp", - "acquia-managed" - ] - } - }, - "required": [ - "id", - "name", - "is_enabled" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "const": "File copy started.", + "description": "Confirmation message that the file copy has been started." } - }, - "required": [ - "_embedded" - ] + } } ] }, - "examples": { - "security_rule_sets_response": { - "summary": "Security rulesets collection with pagination", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets?limit=2{&offset}", - "templated": true - } - }, - "count": 2, - "total": 5, - "pagination": { - "total": 5, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": 123, - "name": "OWASP Core Ruleset", - "is_enabled": true, - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets/123" - } - } - }, - { - "id": 456, - "name": "Bot Protection", - "is_enabled": false, - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets/456" - } - } - } - ] - } + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323" } - } + }, + "message": "File copy started." } } } @@ -18373,6 +18903,53 @@ } } }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, "500": { "description": "Internal Server Error", "content": { @@ -18425,19 +19002,20 @@ }, "security": [ { - "CDN_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] } }, - "/subscriptions/{subscriptionUuid}/config/security/rulesets/{ruleSetId}": { + "/site-instances/{siteId}.{environmentId}/actions/cancel": { "servers": [ { "url": "https://api.acquia.com/v3" } ], - "get": { - "operationId": "findSecurityRuleSetBySubscriptionUuidAndRuleSetId", + "post": { + "summary": "Dissociates a site and environment.", + "operationId": "cancelSiteInstanceBySiteIdAndEnvironmentId", "x-acquia-exposure": { "channels": { "rest": { @@ -18445,248 +19023,228 @@ }, "cli": { "enabled": true, - "command": "subscriptions:find-security-rule-set" + "command": "site-instances:cancel" } }, "stability": "development", "audience": [ "public" - ] + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } }, "x-acquia-operation": { "provider": { - "service": "cdn-service" + "service": "environment-service" } }, "tags": [ - "CDNs" + "Site Instances" ], - "summary": "Retrieves a security ruleset.", - "description": "Retrieves a security ruleset for a subscription.", "parameters": [ { - "name": "subscriptionUuid", + "name": "siteId", "in": "path", "required": true, - "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } + }, + "description": "Unique identifier for the site." }, { - "name": "ruleSetId", + "name": "environmentId", "in": "path", "required": true, - "description": "The unique identifier of the security rule set.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } + }, + "description": "Unique identifier for the environment." } ], "responses": { - "200": { - "description": "OK", + "202": { + "description": "Site instance cancellation started", "content": { "application/hal+json": { "schema": { "allOf": [ { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 1, - "description": "The unique identifier of the security ruleset." - }, - "name": { - "type": "string", - "description": "The display name of the security ruleset." - }, - "is_enabled": { - "type": "boolean", - "description": "Indicates whether the security ruleset is enabled." - }, - "description": { - "type": "string", - "description": "The description of the security ruleset." - }, - "type": { - "type": "string", - "description": "The type of the security ruleset.", - "enum": [ - "owasp", - "acquia-managed" - ] - } - }, - "required": [ - "id", - "name", - "is_enabled" - ] - }, - { - "type": "object", - "properties": { - "_links": { + "allOf": [ + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "_links": { "type": "object", - "description": "HAL link object", + "description": "HAL links for the resource", "properties": { - "href": { - "type": "string", - "anyOf": [ + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, "required": [ - "href" + "self" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] }, - "_embedded": { + { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] } - }, - "required": [ - "_links" ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Site instance cancellation started.", + "description": "Confirmation message that the cancellation has been started." + } + } } ] }, "example": { - "id": 1, - "name": "OWASP Top 10", - "is_enabled": true, - "description": "OWASP Top 10 security ruleset", - "type": "owasp", "_links": { "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets/1" + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323" } - } - } - } - }, - "links": { - "self": { - "operationId": "findSecurityRuleSetBySubscriptionUuidAndRuleSetId", - "parameters": { - "subscriptionUuid": "$request.path.subscriptionUuid", - "ruleSetId": "$request.path.ruleSetId" + }, + "message": "Site instance cancellation started." } } } @@ -18832,6 +19390,53 @@ } } }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, "500": { "description": "Internal Server Error", "content": { @@ -18884,12 +19489,20 @@ }, "security": [ { - "CDN_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] - }, - "put": { - "operationId": "updateSecurityRuleSetBySubscriptionUuidAndRuleSetId", + } + }, + "/site-instances/{siteId}.{environmentId}/actions/enable-protection-mode": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "post": { + "summary": "Enable Site Instance Protection mode.", + "operationId": "enableSiteInstanceProtectionModeBySiteIdAndEnvironmentId", "x-acquia-exposure": { "channels": { "rest": { @@ -18897,79 +19510,51 @@ }, "cli": { "enabled": true, - "command": "subscriptions:update-security-rule-set" + "command": "site-instances:enable-protection-mode" } }, "stability": "development", "audience": [ "public" - ] + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } }, "x-acquia-operation": { "provider": { - "service": "cdn-service" + "service": "environment-service" } }, "tags": [ - "CDNs" + "Site Instances" ], - "summary": "Updates a security rulesets.", - "description": "Updates a security rulesets for a subscription.", "parameters": [ { - "name": "subscriptionUuid", + "name": "siteId", "in": "path", "required": true, - "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } + }, + "description": "Unique identifier for the site." }, { - "name": "ruleSetId", + "name": "environmentId", "in": "path", "required": true, - "description": "The unique identifier of the security rule set.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } + }, + "description": "Unique identifier for the environment." } ], - "requestBody": { - "description": "Security ruleset update request body", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "is_enabled": { - "type": "boolean", - "description": "Indicates whether the security ruleset should be enabled." - } - }, - "additionalProperties": false, - "required": [ - "is_enabled" - ], - "minProperties": 1 - }, - "examples": { - "enable": { - "summary": "Enables a security ruleset", - "value": { - "is_enabled": true - } - } - } - } - } - }, "responses": { - "200": { - "description": "OK", + "202": { + "description": "Enable protection mode initiated", "content": { "application/hal+json": { "schema": { @@ -19133,7 +19718,7 @@ "properties": { "message": { "type": "string", - "const": "The security ruleset has been updated.", + "const": "Site instance protection mode enabled.", "description": "Confirmation message" } } @@ -19143,46 +19728,10 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets/123" - } - }, - "message": "The security ruleset has been updated." - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "href": "https://api.acquia.com/v3/site-instances/d3f7270e-c45f-4801-9308-5e8afe84a323.e3f7270e-c45f-4801-9308-5e8afe84a323" } }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "message": "Site instance protection mode enabled." } } } @@ -19427,19 +19976,20 @@ }, "security": [ { - "CDN_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] } }, - "/subscriptions/{subscriptionUuid}/config/security/ip-rules": { + "/site-instances/{siteId}.{environmentId}/actions/disable-protection-mode": { "servers": [ { "url": "https://api.acquia.com/v3" } ], - "get": { - "operationId": "getIpRulesBySubscriptionUuid", + "post": { + "summary": "Disable Site Instance Protection mode.", + "operationId": "disableSiteInstanceProtectionModeBySiteIdAndEnvironmentId", "x-acquia-exposure": { "channels": { "rest": { @@ -19447,83 +19997,51 @@ }, "cli": { "enabled": true, - "command": "subscriptions:list-ip-rules" + "command": "site-instances:disable-protection-mode" } }, "stability": "development", "audience": [ "public" - ] + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } }, "x-acquia-operation": { "provider": { - "service": "cdn-service" + "service": "environment-service" } }, "tags": [ - "CDNs" + "Site Instances" ], - "summary": "Retrieves a collection of IP rules.", - "description": "Retrieves IP rules for a subscription.", "parameters": [ { - "name": "subscriptionUuid", + "name": "siteId", "in": "path", "required": true, - "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } - }, - { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" }, - "example": "status=active;type=standard" + "description": "Unique identifier for the site." }, { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, + "name": "environmentId", + "in": "path", + "required": true, "schema": { "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + "pattern": "^[a-zA-Z0-9-]+$" }, - "example": "name,-created_at" - }, - { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "example": 20 - } - }, - { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "minimum": 1, - "example": 10 - } + "description": "Unique identifier for the environment." } ], "responses": { - "200": { - "description": "OK", + "202": { + "description": "Disable protection mode initiated", "content": { "application/hal+json": { "schema": { @@ -19671,264 +20189,362 @@ { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "_embedded" + "message" ] } ] }, { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Site instance protection mode disabled.", + "description": "Confirmation message" + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/d3f7270e-c45f-4801-9308-5e8afe84a323.e3f7270e-c45f-4801-9308-5e8afe84a323" + } + }, + "message": "Site instance protection mode disabled." + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Environment_Service_API_BearerAuth": [] + } + ] + } + }, + "/site-instances/{siteId}.{environmentId}/actions/inherit-protection-mode": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "post": { + "summary": "Inherit Site Instance Protection mode.", + "operationId": "inheritSiteInstanceProtectionModeBySiteIdAndEnvironmentId", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "site-instances:inherit-protection-mode" + } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" + } + }, + "tags": [ + "Site Instances" + ], + "parameters": [ + { + "name": "siteId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the site." + }, + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + } + ], + "responses": { + "202": { + "description": "Inherit protection mode initiated", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ { "type": "object", "properties": { "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "prev": { - "description": "Link to the previous page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "next": { - "description": "Link to the next page (templated)", + "self": { "type": "object", + "description": "HAL link object", "properties": { "href": { "type": "string", @@ -19983,162 +20599,11 @@ "templated": true } ] - }, - "offset": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for offset" - }, - "limit": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for limit" } }, + "required": [ + "self" + ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -20198,443 +20663,924 @@ ] } }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { + "_embedded": { "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" - } - }, - "required": [ - "total", - "limit", - "offset" - ] + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "count", - "total", - "pagination" + "_links" ] - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Site instance protection mode inherited from environment.", + "description": "Confirmation message" + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/d3f7270e-c45f-4801-9308-5e8afe84a323.e3f7270e-c45f-4801-9308-5e8afe84a323" + } + }, + "message": "Site instance protection mode inherited from environment." + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 - }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "message": { + "type": "string" } + }, + "required": [ + "error", + "message" ] }, { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Environment_Service_API_BearerAuth": [] + } + ] + } + }, + "/site-instances/{siteId}.{environmentId}/actions/recover": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "post": { + "summary": "Recovers a site instance that is scheduled for deletion", + "operationId": "recoverSiteInstanceBySiteIdAndEnvironmentId", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "site-instances:recover" + } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" + } + }, + "tags": [ + "Site Instances" + ], + "parameters": [ + { + "name": "siteId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the site." + }, + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + } + ], + "responses": { + "202": { + "description": "Site instance restoration started", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "self" + "href" ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" }, - "required": [ - "href" - ], - "examples": [ + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - { + "_embedded": { "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" } + }, + "required": [ + "message" ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Site instance restoration started.", + "description": "Confirmation message" + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/d3f7270e-c45f-4801-9308-5e8afe84a323.e3f7270e-c45f-4801-9308-5e8afe84a323" + }, + "parent": { + "href": "https://api.acquia.com/v3/site-instances" + } + }, + "message": "Site instance restoration started." + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Environment_Service_API_BearerAuth": [] + } + ] + } + }, + "/site-instances/{siteId}.{environmentId}/actions/schedule-delete": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "post": { + "summary": "Schedules a site instance for deletion.", + "operationId": "scheduleDeleteSiteInstanceBySiteIdAndEnvironmentId", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "site-instances:schedule-delete" + } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" + } + }, + "tags": [ + "Site Instances" + ], + "parameters": [ + { + "name": "siteId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the site." + }, + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + } + ], + "responses": { + "202": { + "description": "Site instance deletion scheduled", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ { "type": "object", "properties": { "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "filter": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } + }, + "required": [ + "href" ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } }, + "required": [ + "self" + ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -20693,754 +21639,53 @@ } ] } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" - } - } - }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" - } - } - } - ] - } - } - ] - }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] + "required": [ + "_links" + ] }, { "type": "object", "properties": { - "_links": { - "type": "object", - "properties": { - "sort": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" - }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", - "templated": true + "message": { + "type": "string", + "description": "The message content" } }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } + "required": [ + "message" + ] } ] }, { "type": "object", "properties": { - "_embedded": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "allOf": [ - { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 1, - "description": "The unique identifier of the IP rule." - }, - "display_name": { - "type": "string", - "description": "The display name of the IP rule." - }, - "action": { - "type": "string", - "enum": [ - "block", - "allow" - ], - "description": "The action applied when the rule matches." - }, - "description": { - "type": "string", - "description": "The description of the IP rule." - }, - "ips": { - "type": "array", - "description": "The IPs or CIDR blocks associated with the rule.", - "items": { - "type": "string", - "description": "An IP address or CIDR block." - } - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was created." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was last updated." - } - }, - "required": [ - "id", - "display_name", - "action", - "ips", - "created_at", - "updated_at" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "const": "Site instance deletion scheduled.", + "description": "Confirmation message" } - }, - "required": [ - "_embedded" - ] + } } ] }, - "examples": { - "ip_rules_response": { - "summary": "IP rules collection with pagination", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?limit=2{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?limit=2&offset=0{&filter}", - "templated": true - }, - "sort": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?limit=2&offset=0{&sort}", - "templated": true - }, - "next": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?offset=2&limit=2" - } - }, - "count": 2, - "total": 5, - "pagination": { - "total": 5, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": 101, - "display_name": "Block office IPs", - "action": "block", - "description": "Blocks office IP ranges.", - "ips": [ - "192.0.2.10", - "198.51.100.0/24" - ], - "created_at": "2026-05-01T12:00:00Z", - "updated_at": "2026-05-10T09:30:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/101" - } - } - }, - { - "id": 102, - "display_name": "Allow support", - "action": "allow", - "description": "Allows support traffic.", - "ips": [ - "203.0.113.5" - ], - "created_at": "2026-05-02T08:15:00Z", - "updated_at": "2026-05-11T13:45:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/102" - } - } - } - ] - } - } - } - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/d3f7270e-c45f-4801-9308-5e8afe84a323.e3f7270e-c45f-4801-9308-5e8afe84a323" }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "parent": { + "href": "https://api.acquia.com/v3/site-instances" } }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "message": "Site instance deletion scheduled." } } } @@ -21586,6 +21831,53 @@ } } }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, "500": { "description": "Internal Server Error", "content": { @@ -21638,12 +21930,20 @@ }, "security": [ { - "CDN_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] - }, - "post": { - "operationId": "createIpRuleBySubscriptionUuid", + } + }, + "/site-instances/{siteId}.{environmentId}/domains": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Retrieves a collection of domains for the specified site instance.", + "operationId": "getDomainsBySiteIdAndEnvironmentId", "x-acquia-exposure": { "channels": { "rest": { @@ -21651,96 +21951,95 @@ }, "cli": { "enabled": true, - "command": "subscriptions:create-ip-rule" + "command": "site-instances:list-domains" } }, "stability": "development", "audience": [ "public" - ] + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } }, "x-acquia-operation": { "provider": { - "service": "cdn-service" + "service": "environment-service" } }, "tags": [ - "CDNs" + "Domains" ], - "summary": "Creates an IP rule.", - "description": "Creates an IP rule for a subscription.", "parameters": [ { - "name": "subscriptionUuid", + "name": "siteId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the site." + }, + { + "name": "environmentId", "in": "path", "required": true, - "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + }, + { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 } - } - ], - "requestBody": { - "description": "IP rule create request body", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "ips": { - "type": "array", - "description": "The IPs or CIDR blocks to include in the rule.", - "items": { - "type": "string", - "description": "An IP address or CIDR block." - } - }, - "action": { - "type": "string", - "enum": [ - "block", - "allow" - ], - "description": "The action applied when the rule matches." - }, - "display_name": { - "type": "string", - "description": "The display name of the IP rule." - }, - "description": { - "type": "string", - "description": "The description of the IP rule." - } - }, - "additionalProperties": false, - "required": [ - "ips", - "action", - "display_name" - ] - }, - "examples": { - "create": { - "summary": "Creates an IP rule", - "value": { - "ips": [ - "192.0.2.10", - "198.51.100.0/24" - ], - "action": "block", - "display_name": "Block office IPs", - "description": "Blocks office IP ranges." - } - } - } + }, + { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 } + }, + { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "status=active;type=standard" + }, + { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" } - }, + ], "responses": { "200": { - "description": "OK", + "description": "Domain collection", "content": { "application/hal+json": { "schema": { @@ -21888,919 +22187,206 @@ { "type": "object", "properties": { - "message": { - "type": "string", - "description": "The message content" + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] } }, "required": [ - "message" + "_embedded" ] } ] }, { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "The IP rule has been created.", - "description": "Confirmation message" - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/101" - } - }, - "message": "The IP rule has been created." - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "CDN_API_BearerAuth": [] - } - ] - } - }, - "/subscriptions/{subscriptionUuid}/config/security/ip-rules/{ipRuleId}": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "get": { - "operationId": "findIpRuleBySubscriptionUuidAndIpRuleId", - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "subscriptions:find-ip-rule" - } - }, - "stability": "development", - "audience": [ - "public" - ] - }, - "x-acquia-operation": { - "provider": { - "service": "cdn-service" - } - }, - "tags": [ - "CDNs" - ], - "summary": "Retrieves an IP rule.", - "description": "Retrieves an IP rule for a subscription.", - "parameters": [ - { - "name": "subscriptionUuid", - "in": "path", - "required": true, - "description": "The unique identifier of the subscription.", - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - } - }, - { - "name": "ipRuleId", - "in": "path", - "required": true, - "description": "The unique identifier of the IP rule.", - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 1, - "description": "The unique identifier of the IP rule." - }, - "display_name": { - "type": "string", - "description": "The display name of the IP rule." - }, - "action": { - "type": "string", - "enum": [ - "block", - "allow" - ], - "description": "The action applied when the rule matches." - }, - "description": { - "type": "string", - "description": "The description of the IP rule." - }, - "ips": { - "type": "array", - "description": "The IPs or CIDR blocks associated with the rule.", - "items": { - "type": "string", - "description": "An IP address or CIDR block." - } - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was created." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was last updated." - } - }, - "required": [ - "id", - "display_name", - "action", - "ips", - "created_at", - "updated_at" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { + "allOf": [ + { + "allOf": [ + { "type": "object", - "description": "HAL link object", "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } + }, + "required": [ + "self" ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } + "_links" ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - }, - "example": { - "id": 101, - "display_name": "Block office VPN", - "action": "allow", - "description": "Allow traffic from the office VPN", - "ips": [ - "203.0.113.0/24" - ], - "created_at": "2026-05-01T12:00:00Z", - "updated_at": "2026-05-10T09:30:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/101" - } - } - } - } - }, - "links": { - "self": { - "operationId": "findIpRuleBySubscriptionUuidAndIpRuleId", - "parameters": { - "subscriptionUuid": "$request.path.subscriptionUuid", - "ipRuleId": "$request.path.ipRuleId" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" + "required": [ + "_embedded" + ] + } + ] }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "CDN_API_BearerAuth": [] - } - ] - }, - "put": { - "operationId": "updateIpRuleBySubscriptionUuidAndIpRuleId", - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "subscriptions:update-ip-rule" - } - }, - "stability": "development", - "audience": [ - "public" - ] - }, - "x-acquia-operation": { - "provider": { - "service": "cdn-service" - } - }, - "tags": [ - "CDNs" - ], - "summary": "Updates an IP rule.", - "description": "Updates an IP rule for a subscription.", - "parameters": [ - { - "name": "subscriptionUuid", - "in": "path", - "required": true, - "description": "The unique identifier of the subscription.", - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - } - }, - { - "name": "ipRuleId", - "in": "path", - "required": true, - "description": "The unique identifier of the IP rule.", - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - } - } - ], - "requestBody": { - "description": "IP rule update request body", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "display_name": { - "type": "string", - "description": "The display name of the IP rule." - }, - "action": { - "type": "string", - "enum": [ - "block", - "allow" - ], - "description": "The action applied when the rule matches." - }, - "description": { - "type": "string", - "description": "The description of the IP rule." - }, - "ips": { - "type": "array", - "description": "The IPs or CIDR blocks associated with the rule.", - "items": { - "type": "string", - "description": "An IP address or CIDR block." - } - } - }, - "additionalProperties": false, - "minProperties": 1 - }, - "examples": { - "update": { - "summary": "Updates an IP rule", - "value": { - "display_name": "Allow support", - "action": "allow", - "ips": [ - "203.0.113.5" - ] - } - } - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ { "type": "object", "properties": { "_links": { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "prev": { + "description": "Link to the previous page (templated)", "type": "object", - "description": "HAL link object", "properties": { "href": { "type": "string", @@ -22855,465 +22441,10 @@ "templated": true } ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "The IP rule has been updated.", - "description": "Confirmation message" - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/101" - } - }, - "message": "The IP rule has been updated." - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "CDN_API_BearerAuth": [] - } - ] - }, - "delete": { - "operationId": "deleteIpRuleBySubscriptionUuidAndIpRuleId", - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "subscriptions:delete-ip-rule" - } - }, - "stability": "development", - "audience": [ - "public" - ] - }, - "x-acquia-operation": { - "provider": { - "service": "cdn-service" - } - }, - "tags": [ - "CDNs" - ], - "summary": "Deletes an IP rule.", - "description": "Deletes an IP rule for a subscription.", - "parameters": [ - { - "name": "subscriptionUuid", - "in": "path", - "required": true, - "description": "The unique identifier of the subscription.", - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - } - }, - { - "name": "ipRuleId", - "in": "path", - "required": true, - "description": "The unique identifier of the IP rule.", - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { + "next": { + "description": "Link to the next page (templated)", "type": "object", - "description": "HAL link object", "properties": { "href": { "type": "string", @@ -23368,507 +22499,162 @@ "templated": true } ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "The IP rule has been deleted.", - "description": "Confirmation message" - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/101" - } - }, - "message": "The IP rule has been deleted." - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "CDN_API_BearerAuth": [] - } - ] - } - }, - "/subscriptions/{subscriptionUuid}/config/security/custom-rules": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "get": { - "operationId": "getCustomRulesBySubscriptionUuid", - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "subscriptions:list-custom-rules" - } - }, - "stability": "development", - "audience": [ - "public" - ] - }, - "x-acquia-operation": { - "provider": { - "service": "cdn-service" - } - }, - "tags": [ - "CDNs" - ], - "summary": "Retrieves a collection of custom security rules.", - "description": "Retrieves custom security rules for a subscription.", - "parameters": [ - { - "name": "subscriptionUuid", - "in": "path", - "required": true, - "description": "The unique identifier of the subscription.", - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - } - }, - { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "example": 20 - } - }, - { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "minimum": 1, - "example": 10 - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + ] }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] } - }, - "required": [ - "href" ], - "examples": [ + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] } - ] + ], + "description": "Templated link for limit" } }, - "required": [ - "self" - ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -23928,39 +22714,188 @@ ] } }, - "_embedded": { + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] } }, "required": [ - "_links" + "count", + "total", + "pagination" ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } }, { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" } } }, - "required": [ - "items" - ] + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true } }, - "required": [ - "_embedded" - ] + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } } ] }, @@ -24138,123 +23073,7 @@ "_links": { "type": "object", "properties": { - "prev": { - "description": "Link to the previous page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "next": { - "description": "Link to the next page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "offset": { + "filter": { "allOf": [ { "type": "object", @@ -24329,9 +23148,315 @@ ] } ], - "description": "Templated link for offset" + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - "limit": { + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "sort": { "allOf": [ { "type": "object", @@ -24406,7 +23531,7 @@ ] } ], - "description": "Templated link for limit" + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" } }, "additionalProperties": { @@ -24467,184 +23592,38 @@ } ] } - }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { - "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" - } - }, - "required": [ - "total", - "limit", - "offset" - ] } - }, - "required": [ - "count", - "total", - "pagination" - ] + } } ], "examples": [ { "_links": { "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", "templated": true } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, "_embedded": { "items": [ { - "id": "111e4567-e89b-11d3-a789-426614174000", + "id": "1", "name": "Resource 1", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + "href": "https://api.acquia.com/v3/resources/1" } } }, { - "id": "222e4567-e89b-11d3-a789-426614174000", + "id": "2", "name": "Resource 2", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 - }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + "href": "https://api.acquia.com/v3/resources/2" } } } @@ -24665,236 +23644,32 @@ "allOf": [ { "type": "object", + "description": "Domain properties", "properties": { - "id": { - "type": "integer", - "minimum": 1, - "description": "The unique identifier of the custom security rule." - }, - "display_name": { + "name": { "type": "string", - "description": "The display name of the custom security rule." + "description": "The domain name." }, - "action": { + "is_managed": { + "type": "boolean", + "description": "Whether the domain is managed by Acquia. `false` for `custom` and `true` for every other type. When `type` is absent, `is_managed` is still present and carries the platform's own value for the domain, which is `false` when the platform holds no recorded type. Read-only; there is no `is_managed` write parameter." + }, + "type": { "type": "string", + "description": "The type of the domain. `custom` is a customer's own domain. `acquia` is the generated default domain for the site instance. `environment-pattern` and `codebase-pattern` are platform-generated pattern domains. `launch-group` marks the domain as belonging to a launch group rather than to the site instance directly; it is requested on write via the `type` request property and is restricted to Acquia staff. Absent when the platform holds no recorded type for the domain, or reports one this API does not recognise.", "enum": [ - "block", - "allow", - "alert" + "custom", + "environment-pattern", + "codebase-pattern", + "acquia", + "launch-group" ], - "description": "The action applied when the rule matches." - }, - "priority": { - "type": "integer", - "minimum": 1, - "description": "The priority order for the rule. Lower values are evaluated first.\nPriorities must be unique within a subscription — creating or\nupdating a rule with a priority already in use replaces the\nexisting rule at that priority.\n" - }, - "domains": { - "type": "array", - "description": "The domains the rule applies to.", - "items": { - "type": "string", - "description": "A domain name." - } - }, - "paths": { - "type": "array", - "description": "The paths the rule applies to.", - "items": { - "type": "string", - "description": "A path pattern." - } - }, - "mapped_domains_count": { - "type": "integer", - "description": "The number of domains the rule is mapped to." - }, - "targets": { - "type": "array", - "description": "Conditions that must match for the rule to fire.", - "items": { - "oneOf": [ - { - "description": "Range match for IP or ASN ranges.", - "type": "object", - "required": [ - "attribute", - "criteria", - "value" - ], - "additionalProperties": false, - "properties": { - "attribute": { - "type": "string", - "description": "The request attribute the rule inspects.", - "enum": [ - "source-ip", - "asn" - ] - }, - "criteria": { - "type": "string", - "description": "How `value` is compared against `attribute`.", - "enum": [ - "range" - ] - }, - "value": { - "type": "object", - "description": "Range bounds for IP or ASN ranges.", - "additionalProperties": false, - "required": [ - "from", - "to" - ], - "properties": { - "from": { - "type": "string", - "description": "The start of the range." - }, - "to": { - "type": "string", - "description": "The end of the range." - } - } - } - } - }, - { - "description": "Value-list match for non-header, non-query attributes.", - "type": "object", - "required": [ - "attribute", - "criteria", - "value" - ], - "additionalProperties": false, - "properties": { - "attribute": { - "type": "string", - "description": "The request attribute the rule inspects.", - "enum": [ - "source-ip", - "country", - "method", - "path", - "asn" - ] - }, - "criteria": { - "type": "string", - "description": "How `value` is compared against `attribute`.", - "enum": [ - "equals", - "contains", - "regex" - ] - }, - "value": { - "type": "object", - "description": "A list of candidate values combined with OR.", - "additionalProperties": false, - "required": [ - "values" - ], - "properties": { - "values": { - "type": "array", - "description": "The list of values.", - "items": { - "type": "string", - "description": "A value." - } - } - } - } - } - }, - { - "description": "Key-value match for header or query-string attributes.", - "type": "object", - "required": [ - "attribute", - "criteria", - "value" - ], - "additionalProperties": false, - "properties": { - "attribute": { - "type": "string", - "description": "The request attribute the rule inspects.", - "enum": [ - "header", - "query-string" - ] - }, - "criteria": { - "type": "string", - "description": "How `value` is compared against `attribute`.", - "enum": [ - "equals", - "contains", - "regex" - ] - }, - "value": { - "type": "object", - "description": "Key-value matchers for header or query-string attributes.", - "additionalProperties": false, - "required": [ - "key_value_pairs" - ], - "properties": { - "key_value_pairs": { - "type": "array", - "description": "The list of key-value pairs.", - "items": { - "type": "object", - "description": "A key-value pair.", - "required": [ - "key", - "value" - ], - "properties": { - "key": { - "type": "string", - "description": "The header or query-parameter name." - }, - "value": { - "type": "string", - "description": "The expected value." - } - } - } - } - } - } - } - } - ] - } - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was created." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was last updated." + "example": "custom" } }, "required": [ - "id", - "display_name", - "action", - "priority", - "domains", - "paths", - "created_at", - "updated_at", - "targets" + "name", + "is_managed" ] }, { @@ -25050,94 +23825,48 @@ } ] }, - "examples": { - "custom_rules_response": { - "summary": "Custom rules collection with pagination", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules?limit=2{&offset}", - "templated": true - } - }, - "count": 2, - "total": 5, - "pagination": { - "total": 5, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": 301, - "display_name": "Block bad bots", - "action": "block", - "priority": 1, - "domains": [ - "example.com" - ], - "paths": [ - "/api/*" - ], - "targets": [ - { - "attribute": "source-ip", - "criteria": "range", - "value": { - "from": "10.0.0.0", - "to": "10.0.0.255" - } - } - ], - "created_at": "2026-05-01T12:00:00Z", - "updated_at": "2026-05-10T09:30:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/301" - } - } - }, - { - "id": 302, - "display_name": "Alert login scans", - "action": "alert", - "priority": 2, - "domains": [ - "shop.example.com" - ], - "paths": [ - "/login" - ], - "targets": [ - { - "attribute": "path", - "criteria": "equals", - "value": { - "values": [ - "/login" - ] - } - } - ], - "created_at": "2026-05-02T08:15:00Z", - "updated_at": "2026-05-11T13:45:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/302" - } - } + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains?limit=2&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains?limit=2{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains?limit=2&offset=0{&filter}", + "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains?limit=2&offset=0{&sort}", + "templated": true + } + }, + "count": 1, + "total": 1, + "pagination": { + "total": 1, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "name": "example.com", + "is_managed": false, + "type": "custom", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains/example.com" } - ] + } } - } + ] } } } @@ -25372,12 +24101,20 @@ }, "security": [ { - "CDN_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] - }, - "post": { - "operationId": "createCustomRuleBySubscriptionUuid", + } + }, + "/site-instances/{siteId}.{environmentId}/domains/{domainName}": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Retrieves details for the specified domain on a site instance.", + "operationId": "findDomainBySiteIdAndEnvironmentIdAndDomainName", "x-acquia-exposure": { "channels": { "rest": { @@ -25385,101 +24122,549 @@ }, "cli": { "enabled": true, - "command": "subscriptions:create-custom-rule" + "command": "site-instances:find-domain" } }, "stability": "development", "audience": [ "public" - ] + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } }, "x-acquia-operation": { "provider": { - "service": "cdn-service" + "service": "environment-service" } }, "tags": [ - "CDNs" + "Domains" ], - "summary": "Creates a custom security rule.", - "description": "Creates a custom security rule for a subscription.", "parameters": [ { - "name": "subscriptionUuid", + "name": "siteId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the site." + }, + { + "name": "environmentId", "in": "path", "required": true, - "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + }, + { + "name": "domainName", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$" + }, + "description": "The fully-qualified domain name (e.g., www.example.com)." + } + ], + "responses": { + "200": { + "description": "Domain details", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "description": "Domain properties", + "properties": { + "name": { + "type": "string", + "description": "The domain name." + }, + "is_managed": { + "type": "boolean", + "description": "Whether the domain is managed by Acquia. `false` for `custom` and `true` for every other type. When `type` is absent, `is_managed` is still present and carries the platform's own value for the domain, which is `false` when the platform holds no recorded type. Read-only; there is no `is_managed` write parameter." + }, + "type": { + "type": "string", + "description": "The type of the domain. `custom` is a customer's own domain. `acquia` is the generated default domain for the site instance. `environment-pattern` and `codebase-pattern` are platform-generated pattern domains. `launch-group` marks the domain as belonging to a launch group rather than to the site instance directly; it is requested on write via the `type` request property and is restricted to Acquia staff. Absent when the platform holds no recorded type for the domain, or reports one this API does not recognise.", + "enum": [ + "custom", + "environment-pattern", + "codebase-pattern", + "acquia", + "launch-group" + ], + "example": "custom" + } + }, + "required": [ + "name", + "is_managed" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "name": "example.com", + "is_managed": false, + "type": "custom", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains/example.com" + } + } + } + } + }, + "links": { + "self": { + "operationId": "findDomainBySiteIdAndEnvironmentIdAndDomainName", + "parameters": { + "siteId": "$request.path.siteId", + "environmentId": "$request.path.environmentId", + "domainName": "$request.path.domainName" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Environment_Service_API_BearerAuth": [] + } + ] + }, + "put": { + "summary": "Adds a domain to the specified site instance.", + "description": "Adds a domain to the specified site instance. Accepts a JSON body whose `type` property is optional, defaulting to `custom` when omitted or when the body is `{}`; a request with no body at all is treated as `{}`. `type: launch-group` marks the domain as belonging to a launch group rather than to the site instance directly, and is restricted to Acquia staff — a non-elevated caller's request is rejected with `403`. Domains of this type are still returned in standard domain listings, and traffic continues to route to them. Adding a domain under an Acquia-reserved domain suffix (e.g. `acquia-sites.com`) is restricted to Acquia staff, as is adding a path-based domain; either is rejected with `403` for a non-elevated caller.", + "operationId": "saveDomainBySiteIdAndEnvironmentIdAndDomainName", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "site-instances:update-domain" } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" + } + }, + "tags": [ + "Domains" + ], + "parameters": [ + { + "name": "siteId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the site." + }, + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + }, + { + "name": "domainName", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$" + }, + "description": "The fully-qualified domain name (e.g., www.example.com)." } ], "requestBody": { - "description": "Custom security rule create request body", - "required": true, + "description": "Domain addition request body", "content": { "application/json": { "schema": { "type": "object", "properties": { - "display_name": { - "type": "string", - "description": "The display name of the custom security rule." - }, - "action": { + "type": { "type": "string", "enum": [ - "block", - "allow", - "alert" + "custom", + "launch-group" ], - "description": "The action applied when the rule matches." - }, - "priority": { - "type": "integer", - "minimum": 1, - "description": "The priority order for the rule." - }, - "domains": { - "type": "array", - "description": "The domains the rule applies to.", - "items": { - "type": "string", - "description": "A domain name." - } - }, - "paths": { - "type": "array", - "description": "The paths the rule applies to.", - "items": { - "type": "string", - "description": "A path pattern." - } + "description": "Optional. The type to register the domain under, defaulting to `custom` when omitted. `launch-group` marks the domain as belonging to a launch group rather than to the site instance directly; it is restricted to Acquia staff, and is rejected with `403` for any other caller. The three platform-owned types — `acquia`, `environment-pattern`, `codebase-pattern` — are read-only and rejected with `400` if requested here." } }, - "additionalProperties": false, - "required": [ - "display_name", - "action", - "domains", - "paths" - ], - "minProperties": 1 + "additionalProperties": false }, "examples": { - "create": { - "summary": "Creates a custom security rule", + "custom_domain": { + "summary": "Add a domain as a custom domain", + "description": "The default path — `type` may equally be omitted, since `{}` registers the domain as `custom` as well. A request with no body at all is equivalent to `{}`.", "value": { - "display_name": "Block bad bots", - "action": "block", - "priority": 1, - "domains": [ - "example.com" - ], - "paths": [ - "/api/*" - ] + "type": "custom" + } + }, + "launch_group_domain": { + "summary": "Add a domain marked as belonging to a launch group", + "description": "Used when attaching a domain that belongs to a launch group rather than to the site instance directly. Restricted to Acquia staff.", + "value": { + "type": "launch-group" } } } @@ -25487,8 +24672,8 @@ } }, "responses": { - "200": { - "description": "OK", + "202": { + "description": "Domain addition started", "content": { "application/hal+json": { "schema": { @@ -25652,8 +24837,8 @@ "properties": { "message": { "type": "string", - "const": "The custom security rule has been created.", - "description": "Confirmation message" + "const": "Domain addition started.", + "description": "Confirmation message that the domain addition has been started." } } } @@ -25662,10 +24847,10 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/301" + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains/example.com" } }, - "message": "The custom security rule has been created." + "message": "Domain addition started." } } } @@ -25946,19 +25131,14 @@ }, "security": [ { - "CDN_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] - } - }, - "/subscriptions/{subscriptionUuid}/config/security/custom-rules/{customRuleId}": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "get": { - "operationId": "findCustomRuleBySubscriptionUuidAndCustomRuleId", + }, + "delete": { + "summary": "Removes a domain from the specified site instance.", + "description": "Removes a domain from the specified site instance. Removing a domain of type `launch-group` is restricted to Acquia staff; a non-elevated caller attempting this is rejected.", + "operationId": "deleteDomainBySiteIdAndEnvironmentIdAndDomainName", "x-acquia-exposure": { "channels": { "rest": { @@ -25966,285 +25146,630 @@ }, "cli": { "enabled": true, - "command": "subscriptions:find-custom-rule" + "command": "site-instances:delete-domain" } }, "stability": "development", "audience": [ "public" - ] + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } }, "x-acquia-operation": { "provider": { - "service": "cdn-service" + "service": "environment-service" } }, "tags": [ - "CDNs" + "Domains" ], - "summary": "Retrieves a custom security rule.", - "description": "Retrieves a custom security rule for a subscription.", "parameters": [ { - "name": "subscriptionUuid", + "name": "siteId", "in": "path", "required": true, - "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } + }, + "description": "Unique identifier for the site." }, { - "name": "customRuleId", + "name": "environmentId", "in": "path", "required": true, - "description": "The unique identifier of the custom security rule.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } + }, + "description": "Unique identifier for the environment." + }, + { + "name": "domainName", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$" + }, + "description": "The fully-qualified domain name (e.g., www.example.com)." } ], "responses": { - "200": { - "description": "OK", + "202": { + "description": "Domain removal started", "content": { "application/hal+json": { "schema": { "allOf": [ { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 1, - "description": "The unique identifier of the custom security rule." - }, - "display_name": { - "type": "string", - "description": "The display name of the custom security rule." - }, - "action": { - "type": "string", - "enum": [ - "block", - "allow", - "alert" - ], - "description": "The action applied when the rule matches." - }, - "priority": { - "type": "integer", - "minimum": 1, - "description": "The priority order for the rule. Lower values are evaluated first.\nPriorities must be unique within a subscription — creating or\nupdating a rule with a priority already in use replaces the\nexisting rule at that priority.\n" - }, - "domains": { - "type": "array", - "description": "The domains the rule applies to.", - "items": { - "type": "string", - "description": "A domain name." - } - }, - "paths": { - "type": "array", - "description": "The paths the rule applies to.", - "items": { - "type": "string", - "description": "A path pattern." - } - }, - "mapped_domains_count": { - "type": "integer", - "description": "The number of domains the rule is mapped to." - }, - "targets": { - "type": "array", - "description": "Conditions that must match for the rule to fire.", - "items": { - "oneOf": [ - { - "description": "Range match for IP or ASN ranges.", - "type": "object", - "required": [ - "attribute", - "criteria", - "value" - ], - "additionalProperties": false, - "properties": { - "attribute": { - "type": "string", - "description": "The request attribute the rule inspects.", - "enum": [ - "source-ip", - "asn" - ] - }, - "criteria": { - "type": "string", - "description": "How `value` is compared against `attribute`.", - "enum": [ - "range" - ] + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - "value": { - "type": "object", - "description": "Range bounds for IP or ASN ranges.", - "additionalProperties": false, - "required": [ - "from", - "to" - ], - "properties": { - "from": { - "type": "string", - "description": "The start of the range." - }, - "to": { - "type": "string", - "description": "The end of the range." - } + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - } + ] } }, - { - "description": "Value-list match for non-header, non-query attributes.", + "required": [ + "self" + ], + "additionalProperties": { "type": "object", - "required": [ - "attribute", - "criteria", - "value" - ], - "additionalProperties": false, + "description": "HAL link object", "properties": { - "attribute": { + "href": { "type": "string", - "description": "The request attribute the rule inspects.", - "enum": [ - "source-ip", - "country", - "method", - "path", - "asn" - ] + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - "criteria": { + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { "type": "string", - "description": "How `value` is compared against `attribute`.", - "enum": [ - "equals", - "contains", - "regex" - ] + "description": "Hint about the media type expected when dereferencing the target resource" }, - "value": { - "type": "object", - "description": "A list of candidate values combined with OR.", - "additionalProperties": false, - "required": [ - "values" - ], - "properties": { - "values": { - "type": "array", - "description": "The list of values.", - "items": { - "type": "string", - "description": "A value." - } - } - } - } - } - }, - { - "description": "Key-value match for header or query-string attributes.", - "type": "object", - "required": [ - "attribute", - "criteria", - "value" - ], - "additionalProperties": false, - "properties": { - "attribute": { + "deprecation": { "type": "string", - "description": "The request attribute the rule inspects.", - "enum": [ - "header", - "query-string" - ] + "description": "A URL to a resource that provides deprecation information" }, - "criteria": { + "name": { "type": "string", - "description": "How `value` is compared against `attribute`.", - "enum": [ - "equals", - "contains", - "regex" - ] + "description": "A secondary key for selecting links" }, - "value": { - "type": "object", - "description": "Key-value matchers for header or query-string attributes.", - "additionalProperties": false, - "required": [ - "key_value_pairs" - ], - "properties": { - "key_value_pairs": { - "type": "array", - "description": "The list of key-value pairs.", - "items": { - "type": "object", - "description": "A key-value pair.", - "required": [ - "key", - "value" - ], - "properties": { - "key": { - "type": "string", - "description": "The header or query-parameter name." - }, - "value": { - "type": "string", - "description": "The expected value." - } - } - } - } - } + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } - } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } - ] - } - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was created." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was last updated." + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Domain removal started.", + "description": "Confirmation message that the domain removal has been started." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains/example.com" + } + }, + "message": "Domain removal started." + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" } }, "required": [ - "id", - "display_name", - "action", - "priority", - "domains", - "paths", - "created_at", - "updated_at", - "targets" + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Environment_Service_API_BearerAuth": [] + } + ] + } + }, + "/site-instances/{siteId}.{environmentId}/domains/{domainName}/status": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Retrieves the DNS status for the specified domain on a site instance.", + "operationId": "findDomainStatusBySiteIdAndEnvironmentIdAndDomainName", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "site-instances:find-domain-status" + } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" + } + }, + "tags": [ + "Domains" + ], + "parameters": [ + { + "name": "siteId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the site." + }, + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + }, + { + "name": "domainName", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$" + }, + "description": "The fully-qualified domain name (e.g., www.example.com)." + } + ], + "responses": { + "200": { + "description": "Domain DNS status details", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "description": "Domain DNS status properties", + "properties": { + "hostname": { + "type": "string", + "description": "The domain name." + }, + "site_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the site this domain belongs to." + }, + "environment_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the environment this domain belongs to." + }, + "ip_addresses": { + "type": "array", + "description": "List of IP addresses resolving for this domain.", + "items": { + "type": "string" + } + }, + "cnames": { + "type": "array", + "description": "List of CNAME records resolving for this domain.", + "items": { + "type": "string" + } + }, + "flags": { + "type": "object", + "description": "Status flags for the domain.", + "properties": { + "default": { + "type": "boolean", + "description": "Whether this is the default domain." + }, + "active": { + "type": "boolean", + "description": "Whether the domain is active." + }, + "dns_resolves": { + "type": "boolean", + "description": "Whether the domain DNS resolves correctly." + }, + "acquia_hosted": { + "type": "boolean", + "description": "Whether the domain is hosted on Acquia infrastructure." + } + }, + "required": [ + "default", + "active", + "dns_resolves", + "acquia_hosted" + ] + } + }, + "required": [ + "hostname", + "site_id", + "environment_id", + "ip_addresses", + "cnames", + "flags" ] }, { @@ -26388,43 +25913,455 @@ ] }, "example": { - "id": 301, - "display_name": "Block bad bots", - "action": "block", - "priority": 1, - "domains": [ - "example.com" - ], - "paths": [ - "/api/*" + "hostname": "example.com", + "site_id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", + "ip_addresses": [ + "203.0.113.10" ], - "targets": [ + "cnames": [], + "flags": { + "default": false, + "active": true, + "dns_resolves": true, + "acquia_hosted": true + }, + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains/example.com/status" + } + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ { - "attribute": "source-ip", - "criteria": "range", - "value": { - "from": "10.0.0.0", - "to": "10.0.0.255" - } + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] }, { - "attribute": "header", - "criteria": "equals", - "value": { - "key_value_pairs": [ - { - "key": "User-Agent", - "value": "BadBot/1.0" + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Environment_Service_API_BearerAuth": [] + } + ] + } + }, + "/site-instances/{siteId}.{environmentId}/database": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Retrieves database details for the specified site instance.", + "operationId": "findDatabaseBySiteIdAndEnvironmentId", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "site-instances:find-database" + } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" + } + }, + "tags": [ + "Site Instance Databases" + ], + "parameters": [ + { + "name": "siteId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the site." + }, + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + } + ], + "responses": { + "200": { + "description": "Database details", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "description": "Database properties", + "properties": { + "database_name": { + "type": "string", + "description": "The name of the database." + }, + "database_role": { + "type": "string", + "description": "The role of the database (e.g. the site username)." + } + }, + "required": [ + "database_name", + "database_role" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } - ] - } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] } - ], - "created_at": "2026-05-01T12:00:00Z", - "updated_at": "2026-05-10T09:30:00Z", + ] + }, + "example": { + "database_name": "site_dev", + "database_role": "site_dev_user", "_links": { "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/301" + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database" } } } @@ -26432,10 +26369,10 @@ }, "links": { "self": { - "operationId": "findCustomRuleBySubscriptionUuidAndCustomRuleId", + "operationId": "findDatabaseBySiteIdAndEnvironmentId", "parameters": { - "subscriptionUuid": "$request.path.subscriptionUuid", - "customRuleId": "$request.path.customRuleId" + "siteId": "$request.path.siteId", + "environmentId": "$request.path.environmentId" } } } @@ -26633,12 +26570,13 @@ }, "security": [ { - "CDN_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] }, - "put": { - "operationId": "updateCustomRuleBySubscriptionUuidAndCustomRuleId", + "post": { + "summary": "Copies a database from another environment to the specified site instance.", + "operationId": "copySiteInstanceDatabaseBySiteIdAndEnvironmentId", "x-acquia-exposure": { "channels": { "rest": { @@ -26646,105 +26584,70 @@ }, "cli": { "enabled": true, - "command": "subscriptions:update-custom-rule" + "command": "site-instances:copy-database" } }, "stability": "development", "audience": [ "public" - ] + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } }, "x-acquia-operation": { "provider": { - "service": "cdn-service" + "service": "environment-service" } }, "tags": [ - "CDNs" + "Site Instance Databases" ], - "summary": "Updates a custom security rule.", - "description": "Updates a custom security rule for a subscription.", "parameters": [ { - "name": "subscriptionUuid", + "name": "siteId", "in": "path", "required": true, - "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } + }, + "description": "Unique identifier for the site." }, { - "name": "customRuleId", + "name": "environmentId", "in": "path", "required": true, - "description": "The unique identifier of the custom security rule.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } + }, + "description": "Unique identifier for the environment." } ], "requestBody": { - "description": "Custom security rule update request body", - "required": true, + "description": "Copy site instance database request body", "content": { "application/json": { "schema": { "type": "object", "properties": { - "display_name": { - "type": "string", - "description": "The display name of the custom security rule." - }, - "action": { + "source_environment_id": { "type": "string", - "enum": [ - "block", - "allow", - "alert" - ], - "description": "The action applied when the rule matches." - }, - "priority": { - "type": "integer", - "minimum": 1, - "description": "The priority order for the rule." - }, - "domains": { - "type": "array", - "description": "The domains the rule applies to.", - "items": { - "type": "string", - "description": "A domain name." - } - }, - "paths": { - "type": "array", - "description": "The paths the rule applies to.", - "items": { - "type": "string", - "description": "A path pattern." - } + "description": "The UUID of the environment to copy the database from." } }, - "additionalProperties": false, - "minProperties": 1 + "required": [ + "source_environment_id" + ], + "additionalProperties": false }, "examples": { - "update": { - "summary": "Updates a custom security rule", + "copy_database": { + "summary": "Copy database from another environment", "value": { - "display_name": "Alert login scans", - "action": "alert", - "priority": 2, - "domains": [ - "shop.example.com" - ], - "paths": [ - "/login" - ] + "source_environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323" } } } @@ -26752,8 +26655,8 @@ } }, "responses": { - "200": { - "description": "OK", + "202": { + "description": "Database copy started", "content": { "application/hal+json": { "schema": { @@ -26917,8 +26820,8 @@ "properties": { "message": { "type": "string", - "const": "The custom security rule has been updated.", - "description": "Confirmation message" + "const": "Database copy started.", + "description": "Confirmation message that the database copy has been started." } } } @@ -26927,10 +26830,10 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/301" + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database" } }, - "message": "The custom security rule has been updated." + "message": "Database copy started." } } } @@ -27211,12 +27114,20 @@ }, "security": [ { - "CDN_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] - }, - "delete": { - "operationId": "deleteCustomRuleBySubscriptionUuidAndCustomRuleId", + } + }, + "/site-instances/{siteId}.{environmentId}/database/connection": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Retrieves database connection credentials for the specified site instance.", + "operationId": "findDatabaseConnectionBySiteIdAndEnvironmentId", "x-acquia-exposure": { "channels": { "rest": { @@ -27224,226 +27135,239 @@ }, "cli": { "enabled": true, - "command": "subscriptions:delete-custom-rule" + "command": "site-instances:find-database-connection" } }, "stability": "development", "audience": [ "public" - ] + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } }, "x-acquia-operation": { "provider": { - "service": "cdn-service" + "service": "environment-service" } }, "tags": [ - "CDNs" + "Site Instance Databases" ], - "summary": "Deletes a custom security rule.", - "description": "Deletes a custom security rule for a subscription.", "parameters": [ { - "name": "subscriptionUuid", + "name": "siteId", "in": "path", "required": true, - "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } + }, + "description": "Unique identifier for the site." }, { - "name": "customRuleId", + "name": "environmentId", "in": "path", "required": true, - "description": "The unique identifier of the custom security rule.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } + }, + "description": "Unique identifier for the environment." } ], "responses": { "200": { - "description": "OK", + "description": "Database connection credential details", "content": { "application/hal+json": { "schema": { "allOf": [ { - "allOf": [ - { + "type": "object", + "description": "Database connection credential properties", + "properties": { + "db_host": { + "type": "string", + "description": "The database host." + }, + "name": { + "type": "string", + "description": "The database name." + }, + "password": { + "type": "string", + "description": "The database password." + }, + "user_name": { + "type": "string", + "description": "The database username." + }, + "ssh_host": { + "type": "string", + "description": "The SSH host for tunneling to the database." + } + }, + "required": [ + "db_host", + "name", + "password", + "user_name", + "ssh_host" + ] + }, + { + "type": "object", + "properties": { + "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "_links": { + "self": { "type": "object", - "description": "HAL links for the resource", + "description": "HAL link object", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "self" + "href" ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" }, - "required": [ - "href" - ], - "examples": [ + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - { + "_embedded": { "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] + "description": "Embedded resources (optional)", + "additionalProperties": {} } + }, + "required": [ + "_links" ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "The custom security rule has been deleted.", - "description": "Confirmation message" - } - } } ] }, "example": { + "db_host": "db.example.com", + "name": "site_dev", + "password": "s3cr3t", + "user_name": "site_dev_user", + "ssh_host": "site.dev.ssh.hosted.acquia-sites.com", "_links": { "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/301" + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/connection" } - }, - "message": "The custom security rule has been deleted." + } } } } @@ -27589,53 +27513,6 @@ } } }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, "500": { "description": "Internal Server Error", "content": { @@ -27688,19 +27565,20 @@ }, "security": [ { - "CDN_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] } }, - "/subscriptions/{subscriptionUuid}/config/security/rate-limiting-rules": { + "/site-instances/{siteId}.{environmentId}/database/backups": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "operationId": "getRateLimitingRulesBySubscriptionUuid", + "summary": "Retrieves a collection of database backups for the specified site instance.", + "operationId": "getDatabaseBackupsBySiteIdAndEnvironmentId", "x-acquia-exposure": { "channels": { "rest": { @@ -27708,56 +27586,46 @@ }, "cli": { "enabled": true, - "command": "subscriptions:list-rate-limiting-rules" + "command": "site-instances:list-database-backups" } }, "stability": "development", "audience": [ "public" - ] + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } }, "x-acquia-operation": { "provider": { - "service": "cdn-service" + "service": "environment-service" } }, "tags": [ - "CDNs" + "Site Instance Databases" ], - "summary": "Retrieves a collection of rate limiting rules.", - "description": "Retrieves rate limiting rules for a subscription.", "parameters": [ { - "name": "subscriptionUuid", + "name": "siteId", "in": "path", "required": true, - "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } - }, - { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" }, - "example": "status=active;type=standard" + "description": "Unique identifier for the site." }, { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, + "name": "environmentId", + "in": "path", + "required": true, "schema": { "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + "pattern": "^[a-zA-Z0-9-]+$" }, - "example": "name,-created_at" + "description": "Unique identifier for the environment." }, { "name": "offset", @@ -27780,11 +27648,33 @@ "minimum": 1, "example": 10 } + }, + { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "status=active;type=standard" + }, + { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" } ], "responses": { "200": { - "description": "OK", + "description": "Database backup collection", "content": { "application/hal+json": { "schema": { @@ -29389,60 +29279,37 @@ "allOf": [ { "type": "object", + "description": "Database backup properties", "properties": { "id": { - "type": "integer", - "minimum": 1, - "description": "The unique identifier of the rate limiting rule." - }, - "display_name": { "type": "string", - "description": "The display name of the rate limiting rule." - }, - "action": { - "type": "string", - "enum": [ - "block", - "alert" - ], - "description": "The action applied when the rule matches." + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the database backup." }, - "rate_limit_per_minute": { + "database_id": { "type": "string", - "enum": [ - "lenient", - "moderate", - "strict" - ], - "description": "The rate limit category applied to the rule." - }, - "domains": { - "type": "array", - "description": "The domains the rule applies to.", - "items": { - "type": "string", - "description": "A domain name." - } + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the database this backup belongs to." }, "created_at": { "type": "string", "format": "date-time", - "description": "The timestamp when the rule was created." + "description": "Timestamp when the backup was created." }, - "updated_at": { + "type": { "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was last updated." + "enum": [ + "DAILY", + "ON_DEMAND" + ], + "description": "The type of backup." } }, "required": [ "id", - "display_name", - "action", - "rate_limit_per_minute", - "domains", + "database_id", "created_at", - "updated_at" + "type" ] }, { @@ -29598,78 +29465,49 @@ } ] }, - "examples": { - "rate_limiting_rules_response": { - "summary": "Rate limiting rules collection with pagination", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?limit=2{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?limit=2&offset=0{&filter}", - "templated": true - }, - "sort": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?limit=2&offset=0{&sort}", - "templated": true - }, - "next": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?limit=2&offset=2" - } - }, - "count": 2, - "total": 4, - "pagination": { - "total": 4, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": 501, - "display_name": "Rate Rule 1", - "action": "alert", - "rate_limit_per_minute": "lenient", - "domains": [ - "example.com" - ], - "created_at": "2026-05-01T12:00:00Z", - "updated_at": "2026-05-10T09:30:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/501" - } - } - }, - { - "id": 502, - "display_name": "Rate Rule 2", - "action": "block", - "rate_limit_per_minute": "strict", - "domains": [ - "shop.example.com" - ], - "created_at": "2026-05-02T08:15:00Z", - "updated_at": "2026-05-11T13:45:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/502" - } - } + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups?limit=2&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups?limit=2{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups?limit=2&offset=0{&filter}", + "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups?limit=2&offset=0{&sort}", + "templated": true + } + }, + "count": 1, + "total": 1, + "pagination": { + "total": 1, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "database_id": "b2c3d4e5-f6a7-8901-bcde-f01234567891", + "created_at": "2025-04-01T02:00:00.000Z", + "type": "DAILY", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups/a1b2c3d4-e5f6-7890-abcd-ef1234567890" } - ] + } } - } + ] } } } @@ -29904,12 +29742,13 @@ }, "security": [ { - "CDN_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] }, "post": { - "operationId": "createRateLimitingRuleBySubscriptionUuid", + "summary": "Creates a database backup for the specified site instance.", + "operationId": "createDatabaseBackupBySiteIdAndEnvironmentId", "x-acquia-exposure": { "channels": { "rest": { @@ -29917,101 +29756,51 @@ }, "cli": { "enabled": true, - "command": "subscriptions:create-rate-limiting-rule" + "command": "site-instances:create-database-backup" } }, "stability": "development", "audience": [ "public" - ] + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } }, "x-acquia-operation": { "provider": { - "service": "cdn-service" + "service": "environment-service" } }, "tags": [ - "CDNs" + "Site Instance Databases" ], - "summary": "Creates a rate limiting rule.", - "description": "Creates a rate limiting rule for a subscription.", "parameters": [ { - "name": "subscriptionUuid", + "name": "siteId", "in": "path", "required": true, - "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } + }, + "description": "Unique identifier for the site." + }, + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." } ], - "requestBody": { - "description": "Rate limiting rule create request body", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "display_name": { - "type": "string", - "description": "The display name of the rate limiting rule." - }, - "action": { - "type": "string", - "enum": [ - "block", - "alert" - ], - "description": "The action applied when the rule matches." - }, - "domains": { - "type": "array", - "description": "The domains the rule applies to.", - "items": { - "type": "string", - "description": "A domain name." - } - }, - "rate_limit_per_minute": { - "type": "string", - "enum": [ - "lenient", - "moderate", - "strict" - ], - "description": "The rate limit category applied to the rule." - } - }, - "additionalProperties": false, - "required": [ - "display_name", - "action", - "rate_limit_per_minute" - ], - "minProperties": 1 - }, - "examples": { - "create": { - "summary": "Creates a rate limiting rule", - "value": { - "display_name": "Rate Rule 1", - "action": "alert", - "rate_limit_per_minute": "lenient", - "domains": [ - "example.com" - ] - } - } - } - } - } - }, "responses": { - "200": { - "description": "OK", + "202": { + "description": "Database backup creation started", "content": { "application/hal+json": { "schema": { @@ -30175,8 +29964,8 @@ "properties": { "message": { "type": "string", - "const": "The rate limiting rule has been created.", - "description": "Confirmation message" + "const": "Database backup started.", + "description": "Confirmation message that the database backup has been started." } } } @@ -30185,46 +29974,10 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/501" - } - }, - "message": "The rate limiting rule has been created." - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups" } }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "message": "Database backup started." } } } @@ -30469,19 +30222,20 @@ }, "security": [ { - "CDN_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] } }, - "/subscriptions/{subscriptionUuid}/config/security/rate-limiting-rules/{rateLimitingRuleId}": { + "/site-instances/{siteId}.{environmentId}/database/backups/{backupId}": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "operationId": "findRateLimitingRuleBySubscriptionUuidAndRateLimitingRuleId", + "summary": "Retrieves details for the specified database backup.", + "operationId": "findDatabaseBackupBySiteIdAndEnvironmentIdAndBackupId", "x-acquia-exposure": { "channels": { "rest": { @@ -30489,109 +30243,98 @@ }, "cli": { "enabled": true, - "command": "subscriptions:find-rate-limiting-rule" + "command": "site-instances:find-database-backup" } }, "stability": "development", "audience": [ "public" - ] + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } }, "x-acquia-operation": { "provider": { - "service": "cdn-service" + "service": "environment-service" } }, "tags": [ - "CDNs" + "Site Instance Databases" ], - "summary": "Retrieves a rate limiting rule.", - "description": "Retrieves a rate limiting rule for a subscription.", "parameters": [ { - "name": "subscriptionUuid", + "name": "siteId", "in": "path", "required": true, - "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } + }, + "description": "Unique identifier for the site." }, { - "name": "rateLimitingRuleId", + "name": "environmentId", "in": "path", "required": true, - "description": "The unique identifier of the rate limiting rule.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } + }, + "description": "Unique identifier for the environment." + }, + { + "name": "backupId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Database backup identifier" } ], "responses": { "200": { - "description": "OK", + "description": "Database backup details", "content": { "application/hal+json": { "schema": { "allOf": [ { "type": "object", + "description": "Database backup properties", "properties": { "id": { - "type": "integer", - "minimum": 1, - "description": "The unique identifier of the rate limiting rule." - }, - "display_name": { - "type": "string", - "description": "The display name of the rate limiting rule." - }, - "action": { "type": "string", - "enum": [ - "block", - "alert" - ], - "description": "The action applied when the rule matches." + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the database backup." }, - "rate_limit_per_minute": { + "database_id": { "type": "string", - "enum": [ - "lenient", - "moderate", - "strict" - ], - "description": "The rate limit category applied to the rule." - }, - "domains": { - "type": "array", - "description": "The domains the rule applies to.", - "items": { - "type": "string", - "description": "A domain name." - } + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the database this backup belongs to." }, "created_at": { "type": "string", "format": "date-time", - "description": "The timestamp when the rule was created." + "description": "Timestamp when the backup was created." }, - "updated_at": { + "type": { "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was last updated." + "enum": [ + "DAILY", + "ON_DEMAND" + ], + "description": "The type of backup." } }, "required": [ "id", - "display_name", - "action", - "rate_limit_per_minute", - "domains", + "database_id", "created_at", - "updated_at" + "type" ] }, { @@ -30735,18 +30478,16 @@ ] }, "example": { - "id": 501, - "display_name": "Rate Rule 1", - "action": "alert", - "rate_limit_per_minute": "lenient", - "domains": [ - "example.com" - ], - "created_at": "2026-05-01T12:00:00Z", - "updated_at": "2026-05-10T09:30:00Z", + "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "database_id": "b2c3d4e5-f6a7-8901-bcde-f01234567891", + "created_at": "2025-04-01T02:00:00.000Z", + "type": "DAILY", "_links": { "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/501" + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups/a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "download": { + "href": "https://s3.amazonaws.com/acquia-backups/backup-a1b2c3d4.sql.gz?X-Amz-Expires=3600&X-Amz-Signature=abc123" } } } @@ -30754,10 +30495,11 @@ }, "links": { "self": { - "operationId": "findRateLimitingRuleBySubscriptionUuidAndRateLimitingRuleId", + "operationId": "findDatabaseBackupBySiteIdAndEnvironmentIdAndBackupId", "parameters": { - "subscriptionUuid": "$request.path.subscriptionUuid", - "rateLimitingRuleId": "$request.path.rateLimitingRuleId" + "siteId": "$request.path.siteId", + "environmentId": "$request.path.environmentId", + "backupId": "$request.path.backupId" } } } @@ -30955,12 +30697,13 @@ }, "security": [ { - "CDN_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] }, - "put": { - "operationId": "updateRateLimitingRuleBySubscriptionUuidAndRateLimitingRuleId", + "delete": { + "summary": "Deletes the specified database backup.", + "operationId": "deleteDatabaseBackupBySiteIdAndEnvironmentIdAndBackupId", "x-acquia-exposure": { "channels": { "rest": { @@ -30968,106 +30711,61 @@ }, "cli": { "enabled": true, - "command": "subscriptions:update-rate-limiting-rule" + "command": "site-instances:delete-database-backup" } }, "stability": "development", "audience": [ "public" - ] + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } }, "x-acquia-operation": { "provider": { - "service": "cdn-service" + "service": "environment-service" } }, "tags": [ - "CDNs" + "Site Instance Databases" ], - "summary": "Updates a rate limiting rule.", - "description": "Updates a rate limiting rule for a subscription.", "parameters": [ { - "name": "subscriptionUuid", + "name": "siteId", "in": "path", "required": true, - "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } + }, + "description": "Unique identifier for the site." }, { - "name": "rateLimitingRuleId", + "name": "environmentId", "in": "path", "required": true, - "description": "The unique identifier of the rate limiting rule.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } + }, + "description": "Unique identifier for the environment." + }, + { + "name": "backupId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Database backup identifier" } ], - "requestBody": { - "description": "Rate limiting rule update request body", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "display_name": { - "type": "string", - "description": "The display name of the rate limiting rule." - }, - "action": { - "type": "string", - "enum": [ - "block", - "alert" - ], - "description": "The action applied when the rule matches." - }, - "domains": { - "type": "array", - "description": "The domains the rule applies to.", - "items": { - "type": "string", - "description": "A domain name." - } - }, - "rate_limit_per_minute": { - "type": "string", - "enum": [ - "lenient", - "moderate", - "strict" - ], - "description": "The rate limit category applied to the rule." - } - }, - "additionalProperties": false, - "minProperties": 1 - }, - "examples": { - "update": { - "summary": "Updates a rate limiting rule", - "value": { - "display_name": "Rate Rule 2", - "action": "block", - "rate_limit_per_minute": "strict", - "domains": [ - "shop.example.com" - ] - } - } - } - } - } - }, "responses": { - "200": { - "description": "OK", + "202": { + "description": "Database backup deletion started", "content": { "application/hal+json": { "schema": { @@ -31231,8 +30929,8 @@ "properties": { "message": { "type": "string", - "const": "The rate limiting rule has been updated.", - "description": "Confirmation message" + "const": "Database backup deletion started.", + "description": "Confirmation message that the deletion has been started." } } } @@ -31241,46 +30939,10 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/501" - } - }, - "message": "The rate limiting rule has been updated." - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups/a1b2c3d4-e5f6-7890-abcd-ef1234567890" } }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "message": "Database backup deletion started." } } } @@ -31525,12 +31187,20 @@ }, "security": [ { - "CDN_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] - }, - "delete": { - "operationId": "deleteRateLimitingRuleBySubscriptionUuidAndRateLimitingRuleId", + } + }, + "/site-instances/{siteId}.{environmentId}/database/backups/{backupId}/actions/restore": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "post": { + "summary": "Restores the specified database backup to the site instance.", + "operationId": "restoreDatabaseBackupBySiteIdAndEnvironmentIdAndBackupId", "x-acquia-exposure": { "channels": { "rest": { @@ -31538,49 +31208,61 @@ }, "cli": { "enabled": true, - "command": "subscriptions:delete-rate-limiting-rule" + "command": "site-instances:restore-database-backup" } }, "stability": "development", "audience": [ "public" - ] + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } }, "x-acquia-operation": { "provider": { - "service": "cdn-service" + "service": "environment-service" } }, "tags": [ - "CDNs" + "Site Instance Databases" ], - "summary": "Deletes a rate limiting rule.", - "description": "Deletes a rate limiting rule for a subscription.", "parameters": [ { - "name": "subscriptionUuid", + "name": "siteId", "in": "path", "required": true, - "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } + }, + "description": "Unique identifier for the site." }, { - "name": "rateLimitingRuleId", + "name": "environmentId", "in": "path", "required": true, - "description": "The unique identifier of the rate limiting rule.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - } + }, + "description": "Unique identifier for the environment." + }, + { + "name": "backupId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Database backup identifier" } ], "responses": { - "200": { - "description": "OK", + "202": { + "description": "Database backup restore started", "content": { "application/hal+json": { "schema": { @@ -31744,8 +31426,8 @@ "properties": { "message": { "type": "string", - "const": "The rate limiting rule has been deleted.", - "description": "Confirmation message" + "const": "Database restore started.", + "description": "Confirmation message that the restore has been started." } } } @@ -31754,10 +31436,10 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/501" + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups/a1b2c3d4-e5f6-7890-abcd-ef1234567890" } }, - "message": "The rate limiting rule has been deleted." + "message": "Database restore started." } } } @@ -32002,20 +31684,23 @@ }, "security": [ { - "CDN_API_BearerAuth": [] + "Environment_Service_API_BearerAuth": [] } ] } }, - "/codebases/{codebaseId}/environments": { + "/deployments/{deploymentId}": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "summary": "Retrieves a collection of environments for the specified codebase.", - "operationId": "getEnvironmentsByCodebaseId", + "summary": "Retrieves the status of a deployment by deployment ID.", + "operationId": "findDeploymentByDeploymentId", + "tags": [ + "Deployments" + ], "x-acquia-exposure": { "channels": { "rest": { @@ -32023,7 +31708,7 @@ }, "cli": { "enabled": true, - "command": "codebases:list-environments" + "command": "deployments:find" } }, "stability": "development", @@ -32040,57 +31725,533 @@ "service": "environment-service" } }, - "tags": [ - "Environments" - ], "parameters": [ { - "name": "codebaseId", + "name": "deploymentId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Codebase identifier" + "description": "Unique identifier for the deployment." + } + ], + "responses": { + "200": { + "description": "Deployment details", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "description": "Deployment properties", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the deployment." + }, + "environment_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the environment this deployment belongs to." + }, + "status": { + "type": "string", + "description": "Current status of the deployment.", + "enum": [ + "waiting", + "received", + "started", + "done", + "failed", + "error", + "killed" + ] + }, + "code_reference": { + "type": "string", + "description": "The code reference (e.g. branch or tag) deployed." + }, + "run_hooks": { + "type": "boolean", + "description": "Whether deployment hooks were run." + }, + "hooks_argument": { + "type": [ + "string", + "null" + ], + "description": "Additional arguments passed to deployment hooks." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Timestamp when the deployment was created." + }, + "started_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "Timestamp when the deployment started." + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "Timestamp when the deployment completed." + }, + "sender_id": { + "type": [ + "string", + "null" + ], + "description": "Identifier of the user or system that initiated the deployment." + }, + "logs": { + "type": [ + "string", + "null" + ], + "description": "Deployment log output." + } + }, + "required": [ + "id", + "environment_id", + "status", + "code_reference", + "run_hooks", + "created_at" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "id": "e0c9dff7-56b6-4c0d-bad0-0e6593f66cd3", + "environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", + "status": "started", + "code_reference": "tags/v1.0.0", + "run_hooks": true, + "hooks_argument": "--skip-db-update", + "created_at": "2025-04-01T13:01:06.603Z", + "started_at": "2025-04-01T13:01:10.123Z", + "completed_at": null, + "sender_id": null, + "logs": null, + "_links": { + "self": { + "href": "https://api.acquia.com/v3/deployments/e0c9dff7-56b6-4c0d-bad0-0e6593f66cd3" + }, + "environment": { + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323" + } + } + } + } + }, + "links": { + "self": { + "operationId": "findDeploymentByDeploymentId", + "parameters": { + "deploymentId": "$request.path.deploymentId" + } + } + } }, - { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "example": 20 + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } } }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "minimum": 1, - "example": 10 + "Environment_Service_API_BearerAuth": [] + } + ] + } + }, + "/deployments/{deploymentId}/actions/stop": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "post": { + "summary": "Stops a deployment by sending a stop request.", + "operationId": "stopDeploymentByDeploymentId", + "tags": [ + "Deployments" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "deployments:stop" } }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" + } + }, + "parameters": [ { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, + "name": "deploymentId", + "in": "path", + "required": true, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + "pattern": "^[a-zA-Z0-9-]+$" }, - "example": "status=active;type=standard" + "description": "Unique identifier for the deployment." } ], "responses": { - "200": { - "description": "Environment collection", + "202": { + "description": "Deployment stop initiated", "content": { "application/hal+json": { "schema": { @@ -32238,206 +32399,352 @@ { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "_embedded" + "message" ] } ] }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Deployment stop initiated.", + "description": "Confirmation message that the deployment stop has been initiated." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/deployments/e0c9dff7-56b6-4c0d-bad0-0e6593f66cd3" + } + }, + "message": "Deployment stop initiated." + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Environment_Service_API_BearerAuth": [] + } + ] + } + }, + "/deployments/{deploymentId}/actions/terminate": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "post": { + "summary": "Terminates a deployment immediately.", + "operationId": "terminateDeploymentByDeploymentId", + "tags": [ + "Deployments" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "deployments:terminate" + } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" + } + }, + "parameters": [ + { + "name": "deploymentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the deployment." + } + ], + "responses": { + "202": { + "description": "Deployment termination is initiated", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ { "allOf": [ { - "allOf": [ - { + "type": "object", + "properties": { + "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "prev": { - "description": "Link to the previous page (templated)", + "self": { "type": "object", + "description": "HAL link object", "properties": { "href": { "type": "string", @@ -32492,10 +32799,439 @@ "templated": true } ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - "next": { - "description": "Link to the next page (templated)", + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Deployment termination initiated.", + "description": "Confirmation message that the deployment termination has been initiated." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/deployments/e0c9dff7-56b6-4c0d-bad0-0e6593f66cd3" + } + }, + "message": "Deployment termination initiated." + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Environment_Service_API_BearerAuth": [] + } + ] + } + }, + "/site-instances/{siteId}.{environmentId}/actions/reset-data": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "post": { + "summary": "Resets data for a site instance.", + "operationId": "resetSiteInstanceDataBySiteIdAndEnvironmentId", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "site-instances:reset-data" + } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" + } + }, + "tags": [ + "Site Instances" + ], + "parameters": [ + { + "name": "siteId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the site." + }, + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + } + ], + "responses": { + "202": { + "description": "Site instance data reset started", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { "type": "object", + "description": "HAL link object", "properties": { "href": { "type": "string", @@ -32550,162 +33286,11 @@ "templated": true } ] - }, - "offset": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for offset" - }, - "limit": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for limit" } }, + "required": [ + "self" + ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -32765,243 +33350,607 @@ ] } }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { + "_embedded": { "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" - } - }, - "required": [ - "total", - "limit", - "offset" - ] + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "count", - "total", - "pagination" + "_links" ] - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Site instance data reset started.", + "description": "Confirmation message" + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://cloud.acquia.com/api/site-instances/d3f7270e-c45f-4801-9308-5e8afe84a323.e3f7270e-c45f-4801-9308-5e8afe84a323" + }, + "parent": { + "href": "https://cloud.acquia.com/api/site-instances" + } + }, + "message": "Site instance data reset started." + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 - }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "message": { + "type": "string" } + }, + "required": [ + "error", + "message" ] }, { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Environment_Service_API_BearerAuth": [] + } + ] + } + }, + "/environments/{environmentId}/domain-patterns": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Retrieves a collection of domain patterns for the specified environment.", + "operationId": "getDomainPatternsByEnvironmentId", + "tags": [ + "Domain Patterns" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "environments:list-domain-patterns" + } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" + } + }, + "parameters": [ + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + }, + { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { "type": "string", "description": "The language of the target resource" } @@ -33124,7 +34073,123 @@ "_links": { "type": "object", "properties": { - "filter": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "offset": { "allOf": [ { "type": "object", @@ -33199,7 +34264,84 @@ ] } ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" } }, "additionalProperties": { @@ -33260,38 +34402,137 @@ } ] } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] } - } + }, + "required": [ + "count", + "total", + "pagination" + ] } ], "examples": [ { "_links": { "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", "templated": true } }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, "_embedded": { "items": [ { - "id": "1", + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", "name": "Resource 1", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/1" + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" } } }, { - "id": "2", + "id": "222e4567-e89b-11d3-a789-426614174000", "name": "Resource 2", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/2" + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" } } } @@ -33301,30 +34542,44 @@ { "_links": { "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", "templated": true } }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, "_embedded": { "items": [ { - "id": "3", - "name": "Resource 3", + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/3" + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" } } }, { - "id": "4", - "name": "Resource 4", + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/4" + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" } } } @@ -33334,129 +34589,384 @@ ] }, { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "allOf": [ - { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { "type": "object", - "description": "Environment properties", + "description": "HAL link object", "properties": { - "id": { + "href": { "type": "string", - "description": "The unique identifier of the environment", - "pattern": "^[a-zA-Z0-9-]+$" + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - "name": { + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { "type": "string", - "description": "The machine name of the environment" + "description": "Hint about the media type expected when dereferencing the target resource" }, - "label": { + "deprecation": { "type": "string", - "description": "The human-readable label of the environment" + "description": "A URL to a resource that provides deprecation information" }, - "description": { + "name": { "type": "string", - "description": "A description of the environment" + "description": "A secondary key for selecting links" }, - "status": { + "profile": { "type": "string", - "description": "The current status of the environment", - "enum": [ - "normal", - "allocated", - "launching", - "killed", - "cancelled", - "stopped" - ] + "description": "A URI that hints about the profile of the target resource" }, - "flags": { - "type": "object", - "description": "Environment configuration flags", - "additionalProperties": { - "type": "boolean" - } + "title": { + "type": "string", + "description": "A human-readable identifier for the link" }, - "properties": { - "type": "object", - "description": "Environment PHP and server properties", - "properties": { - "version": { - "type": "string", - "description": "PHP version" - }, - "max_execution_time": { - "type": "integer", - "description": "Maximum execution time in seconds" - }, - "memory_limit": { - "type": "integer", - "description": "Memory limit in MB" - }, - "apcu": { - "type": "integer", - "description": "APCu cache size in MB" - }, - "client_max_body_size": { - "type": "integer", - "description": "Maximum client body size in MB" - }, - "max_input_vars": { - "type": "integer", - "description": "Maximum number of input variables" - }, - "max_post_size": { - "type": "integer", - "description": "Maximum POST size in MB" - }, - "memcached_limit": { - "type": "integer", - "description": "Memcached limit in MB" - }, - "upload_max_filesize": { - "type": "integer", - "description": "Maximum upload file size in MB" - }, - "operating_system": { - "type": "string", - "description": "Operating system codename" - } + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "sort": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, - "reference": { - "type": "string", - "description": "The code reference (branch, tag, or commit) deployed to this environment" + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } }, - "code_switch_status": { + "required": [ + "templated" + ] + } + ], + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" + }, + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + } + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { "type": "string", - "description": "The status of the Switch Code action", - "enum": [ - "IDLE", - "IN_PROGRESS" - ] + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the domain pattern." }, - "ssh_url": { + "pattern": { "type": "string", - "format": "uri", - "description": "The SSH connection string for accessing this environment" + "maxLength": 455, + "pattern": "^(?=.*\\[site-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", + "description": "The domain pattern string, optionally followed by a single path segment (e.g. [site-name].acme.com/app). The [site-name] token is mandatory; [environment-name] is optional at environment level. Domain rules (enforced in service layer): ≤ 200 chars excluding token placeholders, at least 2 components (must contain .), no IP addresses, no forbidden suffixes (acquia-sites.com, hosting.acquia.com), no wildcards, no leading/trailing dot or hyphen, no consecutive dots, no query string or fragment. Path rules: optional, max 255 chars, must match ^/[A-Za-z0-9._-]+$, max 1 segment. DNS label limit: 63 chars after token substitution ([site-name] ≤ 14 chars). One pattern per environment.\n", + "example": "[site-name].acme.com" } }, "required": [ "id", - "name", - "label", - "status", - "flags", - "properties", - "reference", - "code_switch_status", - "ssh_url" + "pattern" ] }, { @@ -33612,56 +35122,80 @@ } ] }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2&offset=0{&filter}", - "templated": true + "examples": { + "domain_pattern_collection": { + "summary": "Domain pattern collection", + "value": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns" + }, + "limit": { + "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?limit=25{&offset}", + "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?limit=25&offset=0{&sort}", + "templated": true + } + }, + "count": 1, + "total": 1, + "pagination": { + "total": 1, + "limit": 25, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "11111111-1111-1111-1111-111111111111", + "pattern": "[site-name].acme.com", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns/11111111-1111-1111-1111-111111111111" + } + } + } + ] + } } }, - "count": 1, - "total": 1, - "pagination": { - "total": 1, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", - "name": "dev", - "label": "Dev", - "description": "Development environment", - "status": "normal", - "reference": "branch/main", - "code_switch_status": "IDLE", - "ssh_url": "ssh://site.dev@sitedev.ssh.hosted.acquia-sites.com", - "flags": { - "production": false, - "protection_mode": false + "domain_pattern_collection_empty": { + "summary": "Empty domain pattern collection", + "value": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns" }, - "properties": { - "version": "8.3" + "limit": { + "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?offset=0{&limit}", + "templated": true }, - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc" - } + "offset": { + "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?limit=25{&offset}", + "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?limit=25&offset=0{&sort}", + "templated": true } + }, + "count": 0, + "total": 0, + "pagination": { + "total": 0, + "limit": 25, + "offset": 0 + }, + "_embedded": { + "items": [] } - ] + } } } } @@ -33899,17 +35433,13 @@ "Environment_Service_API_BearerAuth": [] } ] - } - }, - "/codebases/{codebaseId}/environments/{environmentId}": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "get": { - "summary": "Retrieves details for an environment by codebase and environment ID.", - "operationId": "findEnvironmentByCodebaseIdAndEnvironmentId", + }, + "post": { + "summary": "Creates a domain pattern for the specified environment.", + "operationId": "createDomainPatternByEnvironmentId", + "tags": [ + "Domain Patterns" + ], "x-acquia-exposure": { "channels": { "rest": { @@ -33917,7 +35447,7 @@ }, "cli": { "enabled": true, - "command": "codebases:find-environment" + "command": "environments:create-domain-pattern" } }, "stability": "development", @@ -33934,20 +35464,7 @@ "service": "environment-service" } }, - "tags": [ - "Environments" - ], "parameters": [ - { - "name": "codebaseId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Codebase identifier" - }, { "name": "environmentId", "in": "path", @@ -33959,429 +35476,205 @@ "description": "Unique identifier for the environment." } ], + "requestBody": { + "description": "Create domain pattern request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "pattern": { + "type": "string", + "maxLength": 455, + "pattern": "^(?=.*\\[site-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", + "description": "The domain pattern to apply to all associated sites in this environment, optionally followed by a single path segment. The [site-name] token is mandatory; [environment-name] is optional. Domain ≤ 200 chars excluding token placeholders; optional path max 255 chars matching ^/[A-Za-z0-9._-]+$. Additional semantic rules (no IPs, no forbidden suffixes, no wildcards, one pattern per environment) are enforced at the service layer.\n", + "example": "[site-name].acme.com" + } + }, + "required": [ + "pattern" + ], + "additionalProperties": false + }, + "examples": { + "create_domain_pattern": { + "summary": "Create a domain pattern", + "value": { + "pattern": "[site-name].acme.com" + } + } + } + } + } + }, "responses": { - "200": { - "description": "Environment details", + "202": { + "description": "Domain pattern creation initiated.", "content": { "application/hal+json": { "schema": { "allOf": [ { - "type": "object", - "description": "Environment properties", - "properties": { - "id": { - "type": "string", - "description": "The unique identifier of the environment", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "name": { - "type": "string", - "description": "The machine name of the environment" - }, - "label": { - "type": "string", - "description": "The human-readable label of the environment" - }, - "description": { - "type": "string", - "description": "A description of the environment" - }, - "status": { - "type": "string", - "description": "The current status of the environment", - "enum": [ - "normal", - "allocated", - "launching", - "killed", - "cancelled", - "stopped" - ] - }, - "flags": { - "type": "object", - "description": "Environment configuration flags", - "additionalProperties": { - "type": "boolean" - } - }, - "properties": { - "type": "object", - "description": "Environment PHP and server properties", - "properties": { - "version": { - "type": "string", - "description": "PHP version" - }, - "max_execution_time": { - "type": "integer", - "description": "Maximum execution time in seconds" - }, - "memory_limit": { - "type": "integer", - "description": "Memory limit in MB" - }, - "apcu": { - "type": "integer", - "description": "APCu cache size in MB" - }, - "client_max_body_size": { - "type": "integer", - "description": "Maximum client body size in MB" - }, - "max_input_vars": { - "type": "integer", - "description": "Maximum number of input variables" - }, - "max_post_size": { - "type": "integer", - "description": "Maximum POST size in MB" - }, - "memcached_limit": { - "type": "integer", - "description": "Memcached limit in MB" - }, - "upload_max_filesize": { - "type": "integer", - "description": "Maximum upload file size in MB" - }, - "operating_system": { - "type": "string", - "description": "Operating system codename" - } - } - }, - "reference": { - "type": "string", - "description": "The code reference (branch, tag, or commit) deployed to this environment" - }, - "code_switch_status": { - "type": "string", - "description": "The status of the Switch Code action", - "enum": [ - "IDLE", - "IN_PROGRESS" - ] - }, - "ssh_url": { - "type": "string", - "format": "uri", - "description": "The SSH connection string for accessing this environment" - } - }, - "required": [ - "id", - "name", - "label", - "status", - "flags", - "properties", - "reference", - "code_switch_status", - "ssh_url" - ] - }, - { - "type": "object", - "properties": { - "_links": { + "allOf": [ + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "_links": { "type": "object", - "description": "HAL link object", + "description": "HAL links for the resource", "properties": { - "href": { - "type": "string", - "anyOf": [ + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, "required": [ - "href" + "self" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] }, - "_embedded": { + { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] } - }, - "required": [ - "_links" ] }, { "type": "object", "properties": { - "_embedded": { - "type": "object", - "properties": { - "codebase": { - "allOf": [ - { - "type": "object", - "description": "Embedded codebase resource", - "properties": { - "id": { - "type": "string", - "description": "The unique identifier of the codebase" - } - }, - "required": [ - "id" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - } - } + "message": { + "type": "string", + "const": "The domain pattern is being applied to all associated sites in this environment.", + "description": "Confirmation message that the domain pattern is being applied." } } } @@ -34390,56 +35683,48 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc" - }, - "codebase": { - "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323" + "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns/11111111-1111-1111-1111-111111111111" } }, - "id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", - "name": "environment_3e8ecbec-ea7c-4260-8414-ef2938c859bc", - "label": "Environment_3e8ecbec-ea7c-4260-8414-ef2938c859bc", - "description": "Description of 3e8ecbec-ea7c-4260-8414-ef2938c859bc", - "status": "normal", - "flags": { - "production": false, - "protection_mode": false - }, - "properties": { - "version": "8.3", - "max_execution_time": 10, - "memory_limit": 192, - "apcu": 32, - "client_max_body_size": 192, - "max_input_vars": 1000, - "max_post_size": 256, - "memcached_limit": 128, - "upload_max_filesize": 192, - "operating_system": "focal" - }, - "reference": "tag/v3.1", - "code_switch_status": "IDLE", - "ssh_url": "ssh://site.dev@sitedev.ssh.hosted.acquia-sites.com", - "_embedded": { - "codebase": { - "id": "d3f7270e-c45f-4801-9308-5e8afe84a323", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323" - } + "message": "The domain pattern is being applied to all associated sites in this environment." + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." } } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." } } } - }, - "links": { - "self": { - "operationId": "findEnvironmentByEnvironmentId", - "parameters": { - "environmentId": "$request.path.environmentId" - } - } } }, "401": { @@ -34583,6 +35868,53 @@ } } }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, "500": { "description": "Internal Server Error", "content": { @@ -34640,15 +35972,18 @@ ] } }, - "/sites/{siteId}/environments": { + "/environments/{environmentId}/domain-patterns/{patternId}": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "summary": "Retrieves a collection of environments for the specified site.", - "operationId": "getEnvironmentsBySiteId", + "summary": "Retrieves a domain pattern by environment ID and pattern ID.", + "operationId": "findDomainPatternByEnvironmentIdAndPatternId", + "tags": [ + "Domain Patterns" + ], "x-acquia-exposure": { "channels": { "rest": { @@ -34656,7 +35991,7 @@ }, "cli": { "enabled": true, - "command": "sites:list-environments" + "command": "environments:find-domain-pattern" } }, "stability": "development", @@ -34673,46 +36008,500 @@ "service": "environment-service" } }, - "tags": [ - "Environments" - ], "parameters": [ { - "name": "siteId", + "name": "environmentId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the site." + "description": "Unique identifier for the environment." }, { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, + "name": "patternId", + "in": "path", + "required": true, "schema": { - "type": "integer", - "minimum": 0, - "example": 20 + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the domain pattern." + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the domain pattern." + }, + "pattern": { + "type": "string", + "maxLength": 455, + "pattern": "^(?=.*\\[site-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", + "description": "The domain pattern string, optionally followed by a single path segment (e.g. [site-name].acme.com/app). The [site-name] token is mandatory; [environment-name] is optional at environment level. Domain rules (enforced in service layer): ≤ 200 chars excluding token placeholders, at least 2 components (must contain .), no IP addresses, no forbidden suffixes (acquia-sites.com, hosting.acquia.com), no wildcards, no leading/trailing dot or hyphen, no consecutive dots, no query string or fragment. Path rules: optional, max 255 chars, must match ^/[A-Za-z0-9._-]+$, max 1 segment. DNS label limit: 63 chars after token substitution ([site-name] ≤ 14 chars). One pattern per environment.\n", + "example": "[site-name].acme.com" + } + }, + "required": [ + "id", + "pattern" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "id": "11111111-1111-1111-1111-111111111111", + "pattern": "[site-name].acme.com", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns/11111111-1111-1111-1111-111111111111" + } + } + } + } + }, + "links": { + "self": { + "operationId": "findDomainPatternByEnvironmentIdAndPatternId", + "parameters": { + "environmentId": "$request.path.environmentId", + "patternId": "$request.path.patternId" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Environment_Service_API_BearerAuth": [] + } + ] + }, + "put": { + "summary": "Updates a domain pattern for the specified environment.", + "operationId": "updateDomainPatternByEnvironmentIdAndPatternId", + "tags": [ + "Domain Patterns" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "environments:update-domain-pattern" } }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" + } + }, + "parameters": [ + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + }, { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, + "name": "patternId", + "in": "path", + "required": true, "schema": { - "type": "integer", - "minimum": 1, - "example": 10 - } + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the domain pattern." } ], + "requestBody": { + "description": "Update domain pattern request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "pattern": { + "type": "string", + "maxLength": 455, + "pattern": "^(?=.*\\[site-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", + "description": "The updated domain pattern to apply to all associated sites in this environment, optionally followed by a single path segment. The [site-name] token is mandatory. Domain ≤ 200 chars excluding token placeholders; optional path max 255 chars matching ^/[A-Za-z0-9._-]+$. Additional semantic rules (no IPs, no forbidden suffixes, no wildcards, one pattern per environment) are enforced at the service layer.\n" + } + }, + "required": [ + "pattern" + ], + "additionalProperties": false, + "minProperties": 1 + }, + "examples": { + "update_domain_pattern": { + "summary": "Update a domain pattern", + "value": { + "pattern": "[site-name].staging.acme.com" + } + } + } + } + } + }, "responses": { - "200": { - "description": "Environment collection", + "202": { + "description": "Domain pattern update initiated.", "content": { "application/hal+json": { "schema": { @@ -34860,264 +36649,391 @@ { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "_embedded" + "message" ] } ] }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "The domain pattern update is being applied to all associated sites in this environment.", + "description": "Confirmation message that the domain pattern update is being applied." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns/11111111-1111-1111-1111-111111111111" + } + }, + "message": "The domain pattern update is being applied to all associated sites in this environment." + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Environment_Service_API_BearerAuth": [] + } + ] + }, + "delete": { + "summary": "Deletes a domain pattern for the specified environment. Engineering role only.", + "operationId": "deleteDomainPatternByEnvironmentIdAndPatternId", + "tags": [ + "Domain Patterns" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "environments:delete-domain-pattern" + } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "environment-service" + } + }, + "parameters": [ + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + }, + { + "name": "patternId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the domain pattern." + } + ], + "responses": { + "202": { + "description": "Domain pattern deletion initiated. The 202 covers two async operations: (1) removal of the pattern record and (2) a bulk cleanup that disassociates any URLs already generated from this pattern on all associated site instances in the environment. Both operations complete before the final settled state is observable.\n", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ { "allOf": [ { - "allOf": [ - { + "type": "object", + "properties": { + "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "prev": { - "description": "Link to the previous page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "next": { - "description": "Link to the next page (templated)", + "self": { "type": "object", + "description": "HAL link object", "properties": { "href": { "type": "string", @@ -35172,162 +37088,11 @@ "templated": true } ] - }, - "offset": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for offset" - }, - "limit": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for limit" } }, + "required": [ + "self" + ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -35387,553 +37152,49 @@ ] } }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { + "_embedded": { "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" - } - }, - "required": [ - "total", - "limit", - "offset" - ] + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "count", - "total", - "pagination" + "_links" ] - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 - }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "required": [ + "message" + ] } ] }, { "type": "object", "properties": { - "_embedded": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "allOf": [ - { - "type": "object", - "description": "Environment properties", - "properties": { - "id": { - "type": "string", - "description": "The unique identifier of the environment", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "name": { - "type": "string", - "description": "The machine name of the environment" - }, - "label": { - "type": "string", - "description": "The human-readable label of the environment" - }, - "description": { - "type": "string", - "description": "A description of the environment" - }, - "status": { - "type": "string", - "description": "The current status of the environment", - "enum": [ - "normal", - "allocated", - "launching", - "killed", - "cancelled", - "stopped" - ] - }, - "flags": { - "type": "object", - "description": "Environment configuration flags", - "additionalProperties": { - "type": "boolean" - } - }, - "properties": { - "type": "object", - "description": "Environment PHP and server properties", - "properties": { - "version": { - "type": "string", - "description": "PHP version" - }, - "max_execution_time": { - "type": "integer", - "description": "Maximum execution time in seconds" - }, - "memory_limit": { - "type": "integer", - "description": "Memory limit in MB" - }, - "apcu": { - "type": "integer", - "description": "APCu cache size in MB" - }, - "client_max_body_size": { - "type": "integer", - "description": "Maximum client body size in MB" - }, - "max_input_vars": { - "type": "integer", - "description": "Maximum number of input variables" - }, - "max_post_size": { - "type": "integer", - "description": "Maximum POST size in MB" - }, - "memcached_limit": { - "type": "integer", - "description": "Memcached limit in MB" - }, - "upload_max_filesize": { - "type": "integer", - "description": "Maximum upload file size in MB" - }, - "operating_system": { - "type": "string", - "description": "Operating system codename" - } - } - }, - "reference": { - "type": "string", - "description": "The code reference (branch, tag, or commit) deployed to this environment" - }, - "code_switch_status": { - "type": "string", - "description": "The status of the Switch Code action", - "enum": [ - "IDLE", - "IN_PROGRESS" - ] - }, - "ssh_url": { - "type": "string", - "format": "uri", - "description": "The SSH connection string for accessing this environment" - } - }, - "required": [ - "id", - "name", - "label", - "status", - "flags", - "properties", - "reference", - "code_switch_status", - "ssh_url" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "const": "The domain pattern is being removed from all associated sites in this environment.", + "description": "Confirmation message that the domain pattern is being removed." } - }, - "required": [ - "_embedded" - ] + } } ] }, "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/sites/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/sites/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/sites/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2{&offset}", - "templated": true - } - }, - "count": 1, - "total": 1, - "pagination": { - "total": 1, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", - "name": "dev", - "label": "Dev", - "description": "Development environment", - "status": "normal", - "reference": "branch/main", - "code_switch_status": "IDLE", - "ssh_url": "ssh://site.dev@sitedev.ssh.hosted.acquia-sites.com", - "flags": { - "production": false, - "protection_mode": false - }, - "properties": { - "version": "8.3" - }, - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc" - } - } - } - ] - } - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns/11111111-1111-1111-1111-111111111111" } }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "message": "The domain pattern is being removed from all associated sites in this environment." } } } @@ -36079,6 +37340,53 @@ } } }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, "500": { "description": "Internal Server Error", "content": { @@ -36136,15 +37444,16 @@ ] } }, - "/private-networks/{privateNetworkId}/environments": { + "/ssh-keys": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "summary": "Retrieves a collection of environments associated with the specified private network.", - "operationId": "getEnvironmentsByPrivateNetworkId", + "summary": "Gets a list of SSH keys.", + "description": "Gets a list of all SSH keys accessible to the requester. Each key includes\na `user_id` field identifying the owner.\n\nTo look up the owner of an SSH key by fingerprint or public key, apply a\nmandatory filter: `GET /ssh-keys?filter=fingerprint%3D` or\n`GET /ssh-keys?filter=public_key%3D`. The matching key(s) will\ninclude the `user_id` of the owner.\n\nFilterable fields:\n* `label`\n* `fingerprint`\n* `public_key`\n* `user_id`\n\nSortable fields:\n* `label`\n", + "operationId": "getSshKeys", "x-acquia-exposure": { "channels": { "rest": { @@ -36152,37 +37461,23 @@ }, "cli": { "enabled": true, - "command": "private-networks:list-environments" + "command": "ssh-keys:list" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "environment-service" + "service": "ssh-key-service" } }, "tags": [ - "Environments" + "SSH Keys" ], "parameters": [ - { - "name": "privateNetworkId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Private network identifier" - }, { "name": "offset", "in": "query", @@ -36204,11 +37499,33 @@ "minimum": 1, "example": 10 } + }, + { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals (default if no operator specified)\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `label=primary` - Filter by label equals primary\n- `fingerprint=@SHA256` - Filter by fingerprint containing \"SHA256\"\n- `label=primary;fingerprint=@SHA256` - label is primary AND fingerprint contains SHA256\n- `label=primary,label=backup` - label is primary OR backup\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "label=primary;fingerprint=@SHA256" + }, + { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" } ], "responses": { "200": { - "description": "Environment collection", + "description": "OK", "content": { "application/hal+json": { "schema": { @@ -36269,15 +37586,6 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] } }, @@ -36331,15 +37639,6 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] } }, @@ -36437,15 +37736,6 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] } }, @@ -36499,15 +37789,6 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] } }, @@ -36600,15 +37881,6 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] }, "next": { @@ -36658,15 +37930,6 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] }, "offset": { @@ -36718,19 +37981,9 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] }, { - "type": "object", "properties": { "templated": { "type": "boolean", @@ -36795,19 +38048,9 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] }, { - "type": "object", "properties": { "templated": { "type": "boolean", @@ -36871,15 +38114,6 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] } }, @@ -36920,159 +38154,571 @@ "pagination" ] } - ], - "examples": [ + ] + }, + { + "allOf": [ { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", + "allOf": [ + { + "type": "object", + "properties": { "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] } - } - ] - } + }, + "required": [ + "_embedded" + ] + } + ] }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + }, + { + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering." } }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } - } + }, + "required": [ + "href" + ] } - ] + } } - }, + } + ] + }, + { + "allOf": [ { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 - }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", + "allOf": [ + { + "type": "object", + "properties": { "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "sort": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + }, + { + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for sorting." } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] } - ] + } } } ] }, { "type": "object", + "description": "A collection of SSH keys.", "properties": { "_embedded": { "type": "object", + "description": "A collection of SSH keys matching the request parameters.", "properties": { "items": { "type": "array", @@ -37080,119 +38726,46 @@ "allOf": [ { "type": "object", - "description": "Environment properties", + "required": [ + "id", + "label", + "public_key", + "fingerprint", + "created_at", + "user_id" + ], + "description": "Details an SSH key.", "properties": { "id": { "type": "string", - "description": "The unique identifier of the environment", + "description": "The unique identifier of the SSH key.", "pattern": "^[a-zA-Z0-9-]+$" }, - "name": { - "type": "string", - "description": "The machine name of the environment" - }, "label": { "type": "string", - "description": "The human-readable label of the environment" - }, - "description": { - "type": "string", - "description": "A description of the environment" + "description": "The human-readable key label." }, - "status": { + "public_key": { "type": "string", - "description": "The current status of the environment", - "enum": [ - "normal", - "allocated", - "launching", - "killed", - "cancelled", - "stopped" - ] - }, - "flags": { - "type": "object", - "description": "Environment configuration flags", - "additionalProperties": { - "type": "boolean" - } - }, - "properties": { - "type": "object", - "description": "Environment PHP and server properties", - "properties": { - "version": { - "type": "string", - "description": "PHP version" - }, - "max_execution_time": { - "type": "integer", - "description": "Maximum execution time in seconds" - }, - "memory_limit": { - "type": "integer", - "description": "Memory limit in MB" - }, - "apcu": { - "type": "integer", - "description": "APCu cache size in MB" - }, - "client_max_body_size": { - "type": "integer", - "description": "Maximum client body size in MB" - }, - "max_input_vars": { - "type": "integer", - "description": "Maximum number of input variables" - }, - "max_post_size": { - "type": "integer", - "description": "Maximum POST size in MB" - }, - "memcached_limit": { - "type": "integer", - "description": "Memcached limit in MB" - }, - "upload_max_filesize": { - "type": "integer", - "description": "Maximum upload file size in MB" - }, - "operating_system": { - "type": "string", - "description": "Operating system codename" - } - } + "description": "The public key.", + "minLength": 64 }, - "reference": { + "fingerprint": { "type": "string", - "description": "The code reference (branch, tag, or commit) deployed to this environment" + "description": "The public key fingerprint.", + "pattern": "^[A-Za-z0-9:+/=.-]+$" }, - "code_switch_status": { + "created_at": { "type": "string", - "description": "The status of the Switch Code action", - "enum": [ - "IDLE", - "IN_PROGRESS" - ] + "format": "date-time", + "description": "The key creation date." }, - "ssh_url": { + "user_id": { "type": "string", - "format": "uri", - "description": "The SSH connection string for accessing this environment" + "description": "The unique identifier of the user who owns this SSH key.", + "pattern": "^[a-zA-Z0-9-]+$" } - }, - "required": [ - "id", - "name", - "label", - "status", - "flags", - "properties", - "reference", - "code_switch_status", - "ssh_url" - ] + } }, { "type": "object", @@ -37248,15 +38821,6 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] } }, @@ -37310,15 +38874,6 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] } }, @@ -37347,88 +38902,106 @@ } ] }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sites/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/sites/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/sites/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2{&offset}", - "templated": true - } - }, - "count": 1, - "total": 1, - "pagination": { - "total": 1, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", - "name": "dev", - "label": "Dev", - "description": "Development environment", - "status": "normal", - "reference": "branch/main", - "code_switch_status": "IDLE", - "ssh_url": "ssh://site.dev@sitedev.ssh.hosted.acquia-sites.com", - "flags": { - "production": false, - "protection_mode": false + "examples": { + "ssh_keys": { + "summary": "SSH key collection", + "value": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/ssh-keys?limit=2&offset=0" }, - "properties": { - "version": "8.3" + "limit": { + "href": "https://api.acquia.com/v3/ssh-keys?offset=0{&limit}", + "templated": true }, - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc" - } + "offset": { + "href": "https://api.acquia.com/v3/ssh-keys?limit=2{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/ssh-keys?limit=2&offset=0{&filter}", + "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/ssh-keys?limit=2&offset=0{&sort}", + "templated": true + }, + "next": { + "href": "https://api.acquia.com/v3/ssh-keys?limit=2&offset=2" } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "1acbb1a5-e864-4b8e-a3f9-b1ed462afd25", + "label": "primary", + "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQChwPHzTTDKDpSbpa2+d22LcbQmsw92eLsUK3Fmei1fiGDkd34NsYCN8m7lsi3NbvdMS83CtPQPWiCveYPzFs1/hHc4PYj8opD2CNnr5iWVVbyaulCYHCgVv4aB/ojcexg8q483A4xJeF15TiCr/gu34rK6ucTvC/tn/rCwJBudczvEwt0klqYwv8Cl/ytaQboSuem5KgSjO3lMrb6CWtfSNhE43ZOw+UBFBqxIninN868vGMkIv9VY34Pwj54rPn/ItQd6Ef4B0KHHaGmzK0vfP+AK7FxNMoHnj3iYT33KZNqtDozdn5tYyH/bThPebEtgqUn+/w5l6wZIC/8zzvls/127ngHk+jNa0PlNyS2TxhPUK4NaPHIEnnrlp07JEYC4ImcBjaYCWAdcTcUkcJjwZQkN4bGmyO9cjICH98SdLD/HxqzTHeaYDbAX/Hu9HfaBb5dXLWsjw3Xc6hoVnUUZbMQyfgb0KgxDLh92eNGxJkpZiL0VDNOWCxDWsNpzwhLNkLqCvI6lyxiLaUzvJAk6dPaRhExmCbU1lDO2eR0FdSwC1TEhJOT9eDIK1r2hztZKs2oa5FNFfB/IFHVWasVFC9N2h/r/egB5zsRxC9MqBLRBq95NBxaRSFng6ML5WZSw41Qi4C/JWVm89rdj2WqScDHYyAdwyyppWU4T5c9Fmw== example@example.com", + "fingerprint": "SHA256:7a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8g9h0i1j2k3l4m5n6o7p8q9r0s1", + "created_at": "2024-10-01T12:30:00Z", + "user_id": "a47ac10b-58cc-4372-a567-0e02b2c3d479", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/ssh-keys/1acbb1a5-e864-4b8e-a3f9-b1ed462afd25" + } + } + }, + { + "id": "2bcbb1a5-e864-4b8e-a3f9-b1ed462afd26", + "label": "backup", + "public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFf2T1I1d8T1B9Q1b8pS6m2xvY3i5q8sNnU5oQwY5vS9 example@example.com", + "fingerprint": "SHA256:9b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d2e1f0a9b8", + "created_at": "2024-10-02T09:15:00Z", + "user_id": "b58bd21c-69dd-5483-b678-1f13c3d4e580", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/ssh-keys/2bcbb1a5-e864-4b8e-a3f9-b1ed462afd26" + } + } + } + ] } - ] + } } } } } }, "400": { - "description": "Validation Error", + "description": "Bad Request - Validation Error", "content": { "application/json": { "schema": { "type": "object", + "required": [ + "error", + "message" + ], + "description": "A validation error.", "properties": { "error": { - "type": "string" + "type": "string", + "description": "The error summary." }, "message": { "type": "object", + "description": "The validation error message keyed by its field or group name.", "additionalProperties": { "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." } } - }, - "required": [ - "error", - "message" - ] + } }, "example": { "error": "validation_failed", "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." + "field_name": "This field is required." } } } @@ -37442,18 +39015,20 @@ "allOf": [ { "type": "object", + "required": [ + "error", + "message" + ], "properties": { "error": { - "type": "string" + "type": "string", + "description": "The error summary." }, "message": { - "type": "string" + "type": "string", + "description": "The long description for the returned error." } - }, - "required": [ - "error", - "message" - ] + } }, { "type": "object", @@ -37489,18 +39064,20 @@ "allOf": [ { "type": "object", + "required": [ + "error", + "message" + ], "properties": { "error": { - "type": "string" + "type": "string", + "description": "The error summary." }, "message": { - "type": "string" + "type": "string", + "description": "The long description for the returned error." } - }, - "required": [ - "error", - "message" - ] + } }, { "type": "object", @@ -37528,37 +39105,404 @@ } } }, - "404": { - "description": "Not Found", - "content": { + "500": { + "description": "Internal Server Error", + "content": { "application/json": { "schema": { "allOf": [ { "type": "object", + "required": [ + "error", + "message" + ], "properties": { "error": { - "type": "string" + "type": "string", + "description": "The error summary." }, "message": { - "type": "string" + "type": "string", + "description": "The long description for the returned error." + } + } + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "SSH_Key_Service_API_BearerAuth": [] + } + ] + }, + "post": { + "summary": "Installs a new SSH key for the current user.", + "description": "Installs a new SSH key for the current user.", + "operationId": "createSshKey", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "ssh-keys:create" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "ssh-key-service" + } + }, + "tags": [ + "SSH Keys" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "label", + "public_key" + ], + "description": "Describes the request body for an SSH key.", + "properties": { + "label": { + "type": "string", + "description": "The SSH key label." + }, + "public_key": { + "type": "string", + "description": "The public key." + } + }, + "additionalProperties": false, + "minProperties": 1 + }, + "example": { + "label": "mykey", + "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQChwPHzTTDKDpSbpa2+d22LcbQmsw92eLsUK3Fmei1fiGDkd34NsYCN8m7lsi3NbvdMS83CtPQPWiCveYPzFs1/hHc4PYj8opD2CNnr5iWVVbyaulCYHCgVv4aB/ojcexg8q483A4xJeF15TiCr/gu34rK6ucTvC/tn/rCwJBudczvEwt0klqYwv8Cl/ytaQboSuem5KgSjO3lMrb6CWtfSNhE43ZOw+UBFBqxIninN868vGMkIv9VY34Pwj54rPn/ItQd6Ef4B0KHHaGmzK0vfP+AK7FxNMoHnj3iYT33KZNqtDozdn5tYyH/bThPebEtgqUn+/w5l6wZIC/8zzvls/127ngHk+jNa0PlNyS2TxhPUK4NaPHIEnnrlp07JEYC4ImcBjaYCWAdcTcUkcJjwZQkN4bGmyO9cjICH98SdLD/HxqzTHeaYDbAX/Hu9HfaBb5dXLWsjw3Xc6hoVnUUZbMQyfgb0KgxDLh92eNGxJkpZiL0VDNOWCxDWsNpzwhLNkLqCvI6lyxiLaUzvJAk6dPaRhExmCbU1lDO2eR0FdSwC1TEhJOT9eDIK1r2hztZKs2oa5FNFfB/IFHVWasVFC9N2h/r/egB5zsRxC9MqBLRBq95NBxaRSFng6ML5WZSw41Qi4C/JWVm89rdj2WqScDHYyAdwyyppWU4T5c9Fmw== example@example.com" + } + } + } + }, + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "required": [ + "message" + ], + "properties": { + "message": { + "type": "string", + "description": "The human-friendly confirmation of the operation." + } + } + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Added SSH key.", + "description": "Confirmation message." + } + } + } + ] + }, + "example": { + "message": "Added SSH key.", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/ssh-keys/981b7910-2fe9-11e9-b210-d663bd873d93" + } + } + } + } + } + }, + "400": { + "description": "Bad Request - Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "error", + "message" + ], + "description": "A validation error.", + "properties": { + "error": { + "type": "string", + "description": "The error summary." + }, + "message": { + "type": "object", + "description": "The validation error message keyed by its field or group name.", + "additionalProperties": { + "type": "string" + } + } + } + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required." + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "required": [ + "error", + "message" + ], + "properties": { + "error": { + "type": "string", + "description": "The error summary." + }, + "message": { + "type": "string", + "description": "The long description for the returned error." + } + } + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." } }, "required": [ "error", "message" ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "required": [ + "error", + "message" + ], + "properties": { + "error": { + "type": "string", + "description": "The error summary." + }, + "message": { + "type": "string", + "description": "The long description for the returned error." + } + } }, { "type": "object", "properties": { "error": { "type": "string", - "const": "not_found" + "const": "forbidden" }, "message": { "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." + "example": "You do not have permission to perform this action." } }, "required": [ @@ -37569,32 +39513,83 @@ ] }, "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." + "error": "forbidden", + "message": "You do not have permission to perform this action." } } } }, - "500": { - "description": "Internal Server Error", + "409": { + "description": "Conflict", "content": { "application/json": { "schema": { "allOf": [ { "type": "object", + "required": [ + "error", + "message" + ], "properties": { "error": { - "type": "string" + "type": "string", + "description": "The error summary." }, "message": { - "type": "string" + "type": "string", + "description": "The long description for the returned error." + } + } + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." } }, "required": [ "error", "message" ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "required": [ + "error", + "message" + ], + "properties": { + "error": { + "type": "string", + "description": "The error summary." + }, + "message": { + "type": "string", + "description": "The long description for the returned error." + } + } }, { "type": "object", @@ -37627,20 +39622,21 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "SSH_Key_Service_API_BearerAuth": [] } ] } }, - "/environments/{environmentId}": { + "/ssh-keys/{sshKeyId}": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "summary": "Get environment details.", - "operationId": "findEnvironmentByEnvironmentId", + "summary": "Gets an SSH key.", + "description": "Gets an SSH key by SSH Key ID.", + "operationId": "findSshKeyBySshKeyId", "x-acquia-exposure": { "channels": { "rest": { @@ -37648,160 +39644,84 @@ }, "cli": { "enabled": true, - "command": "environments:find" + "command": "ssh-keys:find" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "environment-service" + "service": "ssh-key-service" } }, "tags": [ - "Environments" + "SSH Keys" ], "parameters": [ { - "name": "environmentId", + "name": "sshKeyId", "in": "path", + "description": "The SSH key's unique identifier.", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the environment." + "example": "981b7910-2fe9-11e9-b210-d663bd873d93" } ], "responses": { "200": { - "description": "Environment details", + "description": "OK", "content": { "application/hal+json": { "schema": { "allOf": [ { "type": "object", - "description": "Environment properties", + "required": [ + "id", + "label", + "public_key", + "fingerprint", + "created_at", + "user_id" + ], + "description": "Details an SSH key.", "properties": { "id": { "type": "string", - "description": "The unique identifier of the environment", + "description": "The unique identifier of the SSH key.", "pattern": "^[a-zA-Z0-9-]+$" }, - "name": { - "type": "string", - "description": "The machine name of the environment" - }, "label": { "type": "string", - "description": "The human-readable label of the environment" - }, - "description": { - "type": "string", - "description": "A description of the environment" + "description": "The human-readable key label." }, - "status": { + "public_key": { "type": "string", - "description": "The current status of the environment", - "enum": [ - "normal", - "allocated", - "launching", - "killed", - "cancelled", - "stopped" - ] - }, - "flags": { - "type": "object", - "description": "Environment configuration flags", - "additionalProperties": { - "type": "boolean" - } - }, - "properties": { - "type": "object", - "description": "Environment PHP and server properties", - "properties": { - "version": { - "type": "string", - "description": "PHP version" - }, - "max_execution_time": { - "type": "integer", - "description": "Maximum execution time in seconds" - }, - "memory_limit": { - "type": "integer", - "description": "Memory limit in MB" - }, - "apcu": { - "type": "integer", - "description": "APCu cache size in MB" - }, - "client_max_body_size": { - "type": "integer", - "description": "Maximum client body size in MB" - }, - "max_input_vars": { - "type": "integer", - "description": "Maximum number of input variables" - }, - "max_post_size": { - "type": "integer", - "description": "Maximum POST size in MB" - }, - "memcached_limit": { - "type": "integer", - "description": "Memcached limit in MB" - }, - "upload_max_filesize": { - "type": "integer", - "description": "Maximum upload file size in MB" - }, - "operating_system": { - "type": "string", - "description": "Operating system codename" - } - } + "description": "The public key.", + "minLength": 64 }, - "reference": { + "fingerprint": { "type": "string", - "description": "The code reference (branch, tag, or commit) deployed to this environment" + "description": "The public key fingerprint.", + "pattern": "^[A-Za-z0-9:+/=.-]+$" }, - "code_switch_status": { + "created_at": { "type": "string", - "description": "The status of the Switch Code action", - "enum": [ - "IDLE", - "IN_PROGRESS" - ] + "format": "date-time", + "description": "The key creation date." }, - "ssh_url": { + "user_id": { "type": "string", - "format": "uri", - "description": "The SSH connection string for accessing this environment" + "description": "The unique identifier of the user who owns this SSH key.", + "pattern": "^[a-zA-Z0-9-]+$" } - }, - "required": [ - "id", - "name", - "label", - "status", - "flags", - "properties", - "reference", - "code_switch_status", - "ssh_url" - ] + } }, { "type": "object", @@ -37857,15 +39777,6 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] } }, @@ -37919,15 +39830,6 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] } }, @@ -37940,215 +39842,19 @@ "required": [ "_links" ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "properties": { - "codebase": { - "allOf": [ - { - "type": "object", - "description": "Embedded codebase resource", - "properties": { - "id": { - "type": "string", - "description": "The unique identifier of the codebase" - } - }, - "required": [ - "id" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - } - } - } - } } ] }, "example": { + "id": "1acbb1a5-e864-4b8e-a3f9-b1ed462afd25", + "label": "primary", + "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQChwPHzTTDKDpSbpa2+d22LcbQmsw92eLsUK3Fmei1fiGDkd34NsYCN8m7lsi3NbvdMS83CtPQPWiCveYPzFs1/hHc4PYj8opD2CNnr5iWVVbyaulCYHCgVv4aB/ojcexg8q483A4xJeF15TiCr/gu34rK6ucTvC/tn/rCwJBudczvEwt0klqYwv8Cl/ytaQboSuem5KgSjO3lMrb6CWtfSNhE43ZOw+UBFBqxIninN868vGMkIv9VY34Pwj54rPn/ItQd6Ef4B0KHHaGmzK0vfP+AK7FxNMoHnj3iYT33KZNqtDozdn5tYyH/bThPebEtgqUn+/w5l6wZIC/8zzvls/127ngHk+jNa0PlNyS2TxhPUK4NaPHIEnnrlp07JEYC4ImcBjaYCWAdcTcUkcJjwZQkN4bGmyO9cjICH98SdLD/HxqzTHeaYDbAX/Hu9HfaBb5dXLWsjw3Xc6hoVnUUZbMQyfgb0KgxDLh92eNGxJkpZiL0VDNOWCxDWsNpzwhLNkLqCvI6lyxiLaUzvJAk6dPaRhExmCbU1lDO2eR0FdSwC1TEhJOT9eDIK1r2hztZKs2oa5FNFfB/IFHVWasVFC9N2h/r/egB5zsRxC9MqBLRBq95NBxaRSFng6ML5WZSw41Qi4C/JWVm89rdj2WqScDHYyAdwyyppWU4T5c9Fmw== example@example.com", + "fingerprint": "SHA256:7a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8g9h0i1j2k3l4m5n6o7p8q9r0s1", + "created_at": "2024-10-01T12:30:00Z", + "user_id": "a47ac10b-58cc-4372-a567-0e02b2c3d479", "_links": { "self": { - "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc" - }, - "codebase": { - "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323" - } - }, - "id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", - "name": "environment_3e8ecbec-ea7c-4260-8414-ef2938c859bc", - "label": "Environment_3e8ecbec-ea7c-4260-8414-ef2938c859bc", - "description": "Description of 3e8ecbec-ea7c-4260-8414-ef2938c859bc", - "status": "normal", - "flags": { - "production": false, - "protection_mode": false - }, - "properties": { - "version": "8.3", - "max_execution_time": 10, - "memory_limit": 192, - "apcu": 32, - "client_max_body_size": 192, - "max_input_vars": 1000, - "max_post_size": 256, - "memcached_limit": 128, - "upload_max_filesize": 192, - "operating_system": "focal" - }, - "reference": "tag/v3.1", - "code_switch_status": "IDLE", - "ssh_url": "ssh://site.dev@sitedev.ssh.hosted.acquia-sites.com", - "_embedded": { - "codebase": { - "id": "d3f7270e-c45f-4801-9308-5e8afe84a323", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323" - } - } + "href": "https://api.acquia.com/v3/ssh-keys/1acbb1a5-e864-4b8e-a3f9-b1ed462afd25" } } } @@ -38156,9 +39862,9 @@ }, "links": { "self": { - "operationId": "findEnvironmentByEnvironmentId", + "operationId": "findSshKeyBySshKeyId", "parameters": { - "environmentId": "$request.path.environmentId" + "sshKeyId": "$request.path.sshKeyId" } } } @@ -38171,18 +39877,20 @@ "allOf": [ { "type": "object", + "required": [ + "error", + "message" + ], "properties": { "error": { - "type": "string" + "type": "string", + "description": "The error summary." }, "message": { - "type": "string" + "type": "string", + "description": "The long description for the returned error." } - }, - "required": [ - "error", - "message" - ] + } }, { "type": "object", @@ -38218,18 +39926,20 @@ "allOf": [ { "type": "object", + "required": [ + "error", + "message" + ], "properties": { "error": { - "type": "string" + "type": "string", + "description": "The error summary." }, "message": { - "type": "string" + "type": "string", + "description": "The long description for the returned error." } - }, - "required": [ - "error", - "message" - ] + } }, { "type": "object", @@ -38265,18 +39975,20 @@ "allOf": [ { "type": "object", + "required": [ + "error", + "message" + ], "properties": { "error": { - "type": "string" + "type": "string", + "description": "The error summary." }, "message": { - "type": "string" + "type": "string", + "description": "The long description for the returned error." } - }, - "required": [ - "error", - "message" - ] + } }, { "type": "object", @@ -38312,18 +40024,20 @@ "allOf": [ { "type": "object", + "required": [ + "error", + "message" + ], "properties": { "error": { - "type": "string" + "type": "string", + "description": "The error summary." }, "message": { - "type": "string" + "type": "string", + "description": "The long description for the returned error." } - }, - "required": [ - "error", - "message" - ] + } }, { "type": "object", @@ -38356,13 +40070,14 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "SSH_Key_Service_API_BearerAuth": [] } ] }, - "put": { - "summary": "Modifies properties settings for the specified environment.", - "operationId": "updateEnvironmentByEnvironmentId", + "delete": { + "summary": "Deletes an SSH key.", + "description": "Deletes an SSH key by SSH Key ID.", + "operationId": "deleteSshKeyBySshKeyId", "x-acquia-exposure": { "channels": { "rest": { @@ -38370,143 +40085,38 @@ }, "cli": { "enabled": true, - "command": "environments:update" + "command": "ssh-keys:delete" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "environment-service" + "service": "ssh-key-service" } }, "tags": [ - "Environments" + "SSH Keys" ], "parameters": [ { - "name": "environmentId", + "name": "sshKeyId", "in": "path", + "description": "The SSH key's unique identifier.", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the environment." + "example": "981b7910-2fe9-11e9-b210-d663bd873d93" } ], - "requestBody": { - "description": "Update environment request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "label": { - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Human-readable label for the environment." - }, - "description": { - "type": "string", - "minLength": 1, - "maxLength": 512, - "description": "Description for the environment." - }, - "properties": { - "type": "object", - "description": "PHP and server configuration properties for the environment.", - "properties": { - "version": { - "type": "string", - "description": "PHP version (e.g. \"8.3\")." - }, - "apcu": { - "type": "integer", - "description": "APCu memory limit in MB." - }, - "max_execution_time": { - "type": "integer", - "description": "PHP max execution time in seconds." - }, - "memory_limit": { - "type": "integer", - "description": "PHP memory limit in MB." - }, - "opcache": { - "type": "integer", - "description": "OPcache memory limit in MB." - }, - "interned_strings_buffer": { - "type": "integer", - "description": "OPcache interned strings buffer in MB." - }, - "client_max_body_size": { - "type": "integer", - "description": "Nginx client_max_body_size in MB." - }, - "upload_max_filesize": { - "type": "integer", - "description": "PHP upload_max_filesize in MB." - }, - "max_post_size": { - "type": "integer", - "description": "PHP post_max_size in MB." - }, - "max_input_vars": { - "type": "integer", - "description": "PHP max_input_vars." - }, - "memcached_limit": { - "type": "integer", - "description": "Memcached memory limit in MB." - }, - "operating_system": { - "type": "string", - "description": "Operating system (e.g. \"focal\")." - }, - "sendmail_path": { - "type": "string", - "description": "Sendmail path configuration." - } - } - } - }, - "additionalProperties": false, - "minProperties": 1 - }, - "examples": { - "update_label": { - "summary": "Update environment label", - "value": { - "label": "Staging", - "description": "Staging environment" - } - }, - "update_properties": { - "summary": "Update PHP properties", - "value": { - "properties": { - "version": "8.3", - "memory_limit": 256 - } - } - } - } - } - } - }, "responses": { "202": { - "description": "Environment update started", + "description": "Accepted", "content": { "application/hal+json": { "schema": { @@ -38515,13 +40125,25 @@ "allOf": [ { "type": "object", + "required": [ + "message" + ], "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", + "message": { + "type": "string", + "description": "The human-friendly confirmation of the operation." + } + } + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", "description": "HAL link object", "properties": { "href": { @@ -38567,15 +40189,6 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] } }, @@ -38629,15 +40242,6 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] } }, @@ -38650,18 +40254,6 @@ "required": [ "_links" ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] } ] }, @@ -38670,55 +40262,19 @@ "properties": { "message": { "type": "string", - "const": "Environment update started.", - "description": "Confirmation message that the environment update has been started." + "const": "Removed SSH key.", + "description": "Confirmation message." } } } ] }, "example": { + "message": "Removed SSH key.", "_links": { "self": { - "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc" - } - }, - "message": "Environment update started." - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "href": "https://api.acquia.com/v3/ssh-keys/1acbb1a5-e864-4b8e-a3f9-b1ed462afd25" } - }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." } } } @@ -38732,18 +40288,20 @@ "allOf": [ { "type": "object", + "required": [ + "error", + "message" + ], "properties": { "error": { - "type": "string" + "type": "string", + "description": "The error summary." }, "message": { - "type": "string" + "type": "string", + "description": "The long description for the returned error." } - }, - "required": [ - "error", - "message" - ] + } }, { "type": "object", @@ -38779,18 +40337,20 @@ "allOf": [ { "type": "object", + "required": [ + "error", + "message" + ], "properties": { "error": { - "type": "string" + "type": "string", + "description": "The error summary." }, "message": { - "type": "string" + "type": "string", + "description": "The long description for the returned error." } - }, - "required": [ - "error", - "message" - ] + } }, { "type": "object", @@ -38826,18 +40386,20 @@ "allOf": [ { "type": "object", + "required": [ + "error", + "message" + ], "properties": { "error": { - "type": "string" + "type": "string", + "description": "The error summary." }, "message": { - "type": "string" + "type": "string", + "description": "The long description for the returned error." } - }, - "required": [ - "error", - "message" - ] + } }, { "type": "object", @@ -38873,18 +40435,20 @@ "allOf": [ { "type": "object", + "required": [ + "error", + "message" + ], "properties": { "error": { - "type": "string" + "type": "string", + "description": "The error summary." }, "message": { - "type": "string" + "type": "string", + "description": "The long description for the returned error." } - }, - "required": [ - "error", - "message" - ] + } }, { "type": "object", @@ -38920,18 +40484,20 @@ "allOf": [ { "type": "object", + "required": [ + "error", + "message" + ], "properties": { "error": { - "type": "string" + "type": "string", + "description": "The error summary." }, "message": { - "type": "string" + "type": "string", + "description": "The long description for the returned error." } - }, - "required": [ - "error", - "message" - ] + } }, { "type": "object", @@ -38964,62 +40530,96 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "SSH_Key_Service_API_BearerAuth": [] } ] } }, - "/environments/{environmentId}/actions/enable-protection-mode": { + "/sites": { "servers": [ { "url": "https://api.acquia.com/v3" } ], - "post": { - "summary": "Enable Environment Protection mode.", - "operationId": "enableEnvironmentProtectionModeByEnvironmentId", + "get": { + "summary": "Retrieves a list of sites accessible by the user.", + "operationId": "getSites", + "x-acquia-operation": { + "provider": { + "service": "site-service-php" + } + }, "x-acquia-exposure": { + "stability": "production", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "environments:enable-protection-mode" + "command": "sites:list" } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" } }, "tags": [ - "Environments" + "Sites" ], "parameters": [ { - "name": "environmentId", - "in": "path", - "required": true, + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" }, - "description": "Unique identifier for the environment." + "example": "status=active;type=standard" + }, + { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" } ], "responses": { - "202": { - "description": "Enable protection mode initiated", + "200": { + "description": "OK", "content": { "application/hal+json": { "schema": { @@ -39167,352 +40767,264 @@ { "type": "object", "properties": { - "message": { - "type": "string", - "description": "The message content" + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] } }, "required": [ - "message" + "_embedded" ] } ] }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Environment protection mode enabled.", - "description": "Confirmation message" - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323" - } - }, - "message": "Environment protection mode enabled." - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Environment_Service_API_BearerAuth": [] - } - ] - } - }, - "/environments/{environmentId}/actions/disable-protection-mode": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "post": { - "summary": "Disable Environment Protection mode.", - "operationId": "disableEnvironmentProtectionModeByEnvironmentId", - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "environments:disable-protection-mode" - } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" - } - }, - "tags": [ - "Environments" - ], - "parameters": [ - { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." - } - ], - "responses": { - "202": { - "description": "Disable protection mode initiated", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ { "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, { "type": "object", "properties": { "_links": { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", "type": "object", - "description": "HAL link object", "properties": { "href": { "type": "string", @@ -39567,11 +41079,162 @@ "templated": true } ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" } }, - "required": [ - "self" - ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -39631,1087 +41294,188 @@ ] } }, - "_embedded": { + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] } }, "required": [ - "_links" + "count", + "total", + "pagination" ] - }, + } + ], + "examples": [ { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true } }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Environment protection mode disabled.", - "description": "Confirmation message" - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323" - } - }, - "message": "Environment protection mode disabled." - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Environment_Service_API_BearerAuth": [] - } - ] - } - }, - "/environments/{environmentId}/actions/clear-caches": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "post": { - "summary": "Clears caches for the specified environment.", - "operationId": "clearEnvironmentCachesByEnvironmentId", - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "environments:clear-caches" - } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" - } - }, - "tags": [ - "Environments" - ], - "parameters": [ - { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." - } - ], - "requestBody": { - "description": "Clear caches request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "domains": { - "type": "array", - "description": "List of domain names to clear caches for.", - "minItems": 1, - "items": { - "type": "string", - "description": "A domain name." - } - } - }, - "required": [ - "domains" - ], - "additionalProperties": false - }, - "examples": { - "clear_caches": { - "summary": "Clear caches for specific domains", - "value": { - "domains": [ - "example.com", - "www.example.com" - ] - } - } - } - } - } - }, - "responses": { - "202": { - "description": "Cache clear started", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Varnish domain cache clear started.", - "description": "Confirmation message that the cache clear has been started." - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc" - } - }, - "message": "Varnish domain cache clear started." - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Environment_Service_API_BearerAuth": [] - } - ] - } - }, - "/environments/{environmentId}/eips": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "get": { - "summary": "Retrieves a collection of egress IPs for the specified environment.", - "operationId": "getEgressIpsByEnvironmentId", - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "environments:list-egress-ips" - } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" - } - }, - "tags": [ - "Environments" - ], - "parameters": [ - { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." - }, - { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "example": 20 - } - }, - { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "minimum": 1, - "example": 10 - } - } - ], - "responses": { - "200": { - "description": "Egress IP collection", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } } ] }, @@ -40889,125 +41653,227 @@ "_links": { "type": "object", "properties": { - "prev": { - "description": "Link to the previous page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + ] }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "next": { - "description": "Link to the next page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + }, + "required": [ + "templated" + ] } - }, - "required": [ - "href" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - "offset": { - "allOf": [ - { + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { "type": "object", "description": "HAL link object", "properties": { @@ -41064,25 +41930,113 @@ "templated": true } ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] } + }, + "required": [ + "self" ], - "description": "Templated link for offset" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - "limit": { + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "sort": { "allOf": [ { "type": "object", @@ -41157,7 +42111,7 @@ ] } ], - "description": "Templated link for limit" + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" } }, "additionalProperties": { @@ -41218,184 +42172,38 @@ } ] } - }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { - "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" - } - }, - "required": [ - "total", - "limit", - "offset" - ] } - }, - "required": [ - "count", - "total", - "pagination" - ] + } } ], "examples": [ { "_links": { "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", "templated": true } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, "_embedded": { "items": [ { - "id": "111e4567-e89b-11d3-a789-426614174000", + "id": "1", "name": "Resource 1", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + "href": "https://api.acquia.com/v3/resources/1" } } }, { - "id": "222e4567-e89b-11d3-a789-426614174000", + "id": "2", "name": "Resource 2", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 - }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + "href": "https://api.acquia.com/v3/resources/2" } } } @@ -41416,41 +42224,63 @@ "allOf": [ { "type": "object", - "description": "Egress IP properties", + "description": "A Site resource", "properties": { "id": { "type": "string", + "description": "The unique identifier of the site", "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the egress IP." + "example": "12345678-1234-1234-1234-123456789012" }, - "status": { + "name": { "type": "string", - "description": "Current status of the egress IP." + "description": "The machine name of the site. Must start with a lowercase letter and contain only lowercase letters and numbers.", + "minLength": 1, + "maxLength": 14, + "pattern": "^[a-z][a-z0-9]*$", + "example": "mysite" }, - "ipv4": { + "label": { "type": "string", - "description": "The IPv4 address." + "description": "The human-readable label of the site", + "minLength": 1, + "maxLength": 50, + "example": "My Site 1" }, - "ipv6": { - "type": [ - "string", - "null" + "description": { + "type": "string", + "description": "A description of the site", + "maxLength": 512, + "example": "A production site for the marketing team." + }, + "codebase_id": { + "type": "string", + "description": "The unique identifier of the codebase this site belongs to", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "550e8400-e29b-41d4-a716-446655441210" + }, + "status": { + "type": "string", + "description": "The current lifecycle status of the site. ready indicates the site is active and operational. marked-for-deletion indicates the site has been scheduled for deletion and can still be recovered.\n", + "enum": [ + "ready", + "marked-for-deletion" ], - "description": "The IPv6 address, if assigned." + "example": "ready" }, - "flags": { - "type": "object", - "description": "Status flags for the egress IP.", - "additionalProperties": { - "type": "boolean" - } + "delete_at": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 datetime indicating when the site is scheduled for deletion. Only present when status is marked-for-deletion.", + "example": "2025-06-15T00:00:00Z" } }, "required": [ "id", - "status", - "ipv4", - "flags" + "name", + "label", + "codebase_id", + "status" ] }, { @@ -41606,39 +42436,72 @@ } ] }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/eips?limit=25&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/eips?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/eips?limit=25{&offset}", - "templated": true - } - }, - "count": 1, - "total": 1, - "pagination": { - "total": 1, - "limit": 25, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "eip-a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "status": "active", - "ipv4": "203.0.113.10", - "ipv6": null, - "flags": { - "is_primary": true + "examples": { + "site_collection": { + "summary": "Site collection with pagination", + "value": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sites?limit=2&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/sites?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/sites?limit=2{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/sites?limit=2&offset=0{&filter}", + "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/sites?limit=2&offset=0{&sort}", + "templated": true + }, + "next": { + "href": "https://api.acquia.com/v3/sites?limit=2&offset=2" } + }, + "count": 2, + "total": 4, + "pagination": { + "total": 4, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890", + "name": "mysite", + "label": "My Site", + "description": "A description of my site.", + "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", + "status": "ready", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sites/f1a2b3c4-d5e6-7890-abcd-ef1234567890" + } + } + }, + { + "id": "e2b3c4d5-f6a7-8901-bcde-f12345678901", + "name": "anothersite", + "label": "Another Site", + "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", + "status": "marked-for-deletion", + "delete_at": "2025-01-01T00:00:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sites/e2b3c4d5-f6a7-8901-bcde-f12345678901" + } + } + } + ] } - ] + } } } } @@ -41774,53 +42637,6 @@ } } }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, "500": { "description": "Internal Server Error", "content": { @@ -41873,168 +42689,778 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Site_Service_API_BearerAuth": [] } ] - } - }, - "/environments/{environmentId}/private-network": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "get": { - "summary": "Retrieves the private network associated with the specified environment.", - "operationId": "findPrivateNetworkByEnvironmentId", + }, + "post": { + "summary": "Creates a site for a codebase.", + "operationId": "createSite", + "x-acquia-operation": { + "provider": { + "service": "site-service-php" + } + }, "x-acquia-exposure": { + "stability": "production", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "environments:find-private-network" + "command": "sites:create" } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" } }, "tags": [ - "Environments" + "Sites" ], - "parameters": [ - { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." + "requestBody": { + "description": "Site creation request body", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The machine name of the site. Must start with a lowercase letter and contain only lowercase letters and numbers.", + "minLength": 1, + "maxLength": 14, + "pattern": "^[a-z][a-z0-9]*$", + "example": "mysite" + }, + "label": { + "type": "string", + "description": "The human-readable label for the site.", + "minLength": 1, + "maxLength": 50, + "example": "My Site" + }, + "codebase_id": { + "type": "string", + "description": "The unique identifier of the codebase to associate with this site.", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "a9b8c7d6-e5f4-3210-abcd-ef9876543210" + }, + "site_id": { + "type": "string", + "format": "uuid", + "description": "An optional explicit UUID for the new site. A UUID is generated automatically if omitted.", + "example": "0ebce493-9d09-479d-a9a8-138a206fa687" + }, + "description": { + "type": "string", + "description": "An optional description for the site.", + "maxLength": 512, + "example": "A production site for the marketing team." + } + }, + "required": [ + "name", + "label", + "codebase_id" + ], + "additionalProperties": false + }, + "examples": { + "create_site_full": { + "summary": "Create a new site with all fields", + "value": { + "name": "mysite", + "label": "My Site", + "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", + "site_id": "0ebce493-9d09-479d-a9a8-138a206fa687", + "description": "This is a description of my site." + } + }, + "create_site_minimal": { + "summary": "Create a new site with required fields only", + "value": { + "name": "newsitename", + "label": "New Site Label", + "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210" + } + } + } + } } - ], + }, "responses": { "200": { - "description": "Private network details", + "description": "Site created", "content": { "application/hal+json": { "schema": { "allOf": [ { - "type": "object", - "description": "Private network reference properties", - "properties": { - "id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the private network." - }, - "label": { - "type": [ - "string", - "null" - ], - "description": "Human-readable label for the private network." - } - }, - "required": [ - "id" - ] - }, - { - "type": "object", - "properties": { - "_links": { + "allOf": [ + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "_links": { "type": "object", - "description": "HAL link object", + "description": "HAL links for the resource", "properties": { - "href": { - "type": "string", - "anyOf": [ + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, "required": [ - "href" + "self" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - { - "format": "uri-template" + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Site creation started.", + "description": "Confirmation message indicating site creation has been initiated" + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sites/f1a2b3c4-d5e6-7890-abcd-ef1234567890" + }, + "parent": { + "href": "https://api.acquia.com/v3/sites" + } + }, + "message": "Site creation started." + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Site_Service_API_BearerAuth": [] + } + ] + } + }, + "/sites/{siteId}": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Retrieves a site by its ID.", + "operationId": "findSiteBySiteId", + "x-acquia-operation": { + "provider": { + "service": "site-service-php" + } + }, + "x-acquia-exposure": { + "stability": "production", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + }, + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "sites:find" + } + } + }, + "tags": [ + "Sites" + ], + "parameters": [ + { + "name": "siteId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "12345678-1234-1234-1234-123456789012" + }, + "description": "Unique identifier for the site" + } + ], + "responses": { + "200": { + "description": "Site details", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "description": "A Site resource", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the site", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "12345678-1234-1234-1234-123456789012" + }, + "name": { + "type": "string", + "description": "The machine name of the site. Must start with a lowercase letter and contain only lowercase letters and numbers.", + "minLength": 1, + "maxLength": 14, + "pattern": "^[a-z][a-z0-9]*$", + "example": "mysite" + }, + "label": { + "type": "string", + "description": "The human-readable label of the site", + "minLength": 1, + "maxLength": 50, + "example": "My Site 1" + }, + "description": { + "type": "string", + "description": "A description of the site", + "maxLength": 512, + "example": "A production site for the marketing team." + }, + "codebase_id": { + "type": "string", + "description": "The unique identifier of the codebase this site belongs to", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "550e8400-e29b-41d4-a716-446655441210" + }, + "status": { + "type": "string", + "description": "The current lifecycle status of the site. ready indicates the site is active and operational. marked-for-deletion indicates the site has been scheduled for deletion and can still be recovered.\n", + "enum": [ + "ready", + "marked-for-deletion" + ], + "example": "ready" + }, + "delete_at": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 datetime indicating when the site is scheduled for deletion. Only present when status is marked-for-deletion.", + "example": "2025-06-15T00:00:00Z" + } + }, + "required": [ + "id", + "name", + "label", + "codebase_id", + "status" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" } ], "description": "The target URI of the link (can be a URI or URI template)" @@ -42091,25 +43517,157 @@ "required": [ "_links" ] + }, + { + "type": "object", + "properties": { + "_links": { + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "codebase": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } } ] }, "example": { - "id": "pn-a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "label": "Production VPC", "_links": { "self": { - "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/private-network" + "href": "https://api.acquia.com/v3/sites/f1a2b3c4-d5e6-7890-abcd-ef1234567890" + }, + "codebase": { + "href": "https://api.acquia.com/v3/codebases/a9b8c7d6-e5f4-3210-abcd-ef9876543210" } - } + }, + "id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890", + "name": "mysite", + "label": "My Site", + "description": "This is a description of my site.", + "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", + "status": "ready" } } }, "links": { "self": { - "operationId": "findPrivateNetworkByEnvironmentId", + "operationId": "findSiteBySiteId", "parameters": { - "environmentId": "$request.path.environmentId" + "siteId": "$request.path.siteId" } } } @@ -42307,75 +43865,96 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Site_Service_API_BearerAuth": [] } ] }, "put": { - "summary": "Associates the specified environment with a private network.", - "operationId": "saveEnvironmentPrivateNetworkByEnvironmentId", + "summary": "Updates a site by its ID.", + "operationId": "updateSiteBySiteId", + "x-acquia-operation": { + "provider": { + "service": "site-service-php" + } + }, "x-acquia-exposure": { + "stability": "production", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "environments:associate-private-network" + "command": "sites:update" } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" } }, "tags": [ - "Environments" + "Sites" ], "parameters": [ { - "name": "environmentId", + "name": "siteId", "in": "path", "required": true, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" + "pattern": "^[a-zA-Z0-9-]+$", + "example": "12345678-1234-1234-1234-123456789012" }, - "description": "Unique identifier for the environment." + "description": "Unique identifier for the site" } ], "requestBody": { - "description": "Associate private network request body", + "description": "Site update request body", + "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { - "private_network_id": { + "label": { "type": "string", - "description": "The identifier of the private network to associate with this environment." + "description": "The new human-readable label for the site.", + "minLength": 1, + "maxLength": 50, + "example": "My Updated Site" + }, + "description": { + "type": "string", + "description": "The new description for the site.", + "maxLength": 512, + "example": "Updated description for this site." } }, - "required": [ - "private_network_id" - ], "additionalProperties": false, "minProperties": 1 }, "examples": { - "associate": { - "summary": "Associate a private network", + "update_label": { + "summary": "Update site label", "value": { - "private_network_id": "pn-a1b2c3d4-e5f6-7890-abcd-ef1234567890" + "label": "My Updated Site" + } + }, + "update_description": { + "summary": "Update site description", + "value": { + "description": "Updated description for this site." + } + }, + "update_both": { + "summary": "Update label and description", + "value": { + "label": "My Updated Site", + "description": "Updated description for this site." } } } @@ -42384,7 +43963,7 @@ }, "responses": { "202": { - "description": "Private network association started", + "description": "Site update started", "content": { "application/hal+json": { "schema": { @@ -42548,8 +44127,8 @@ "properties": { "message": { "type": "string", - "const": "Associating private network started.", - "description": "Confirmation message that the association has been started." + "const": "Site update started.", + "description": "Confirmation message indicating site update has been initiated" } } } @@ -42558,10 +44137,13 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/private-network" + "href": "https://api.acquia.com/v3/sites/12345678-1234-1234-1234-123456789012" + }, + "parent": { + "href": "https://api.acquia.com/v3/sites" } }, - "message": "Associating private network started." + "message": "Site update started." } } } @@ -42842,55 +44424,56 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Site_Service_API_BearerAuth": [] } ] }, "delete": { - "summary": "Disassociates the specified environment from its private network.", - "operationId": "deleteEnvironmentPrivateNetworkByEnvironmentId", + "summary": "Deletes a site by its ID.", + "operationId": "deleteSiteBySiteId", + "x-acquia-operation": { + "provider": { + "service": "site-service-php" + } + }, "x-acquia-exposure": { + "stability": "production", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "environments:disassociate-private-network" + "command": "sites:delete" } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" } }, "tags": [ - "Environments" + "Sites" ], "parameters": [ { - "name": "environmentId", + "name": "siteId", "in": "path", "required": true, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" + "pattern": "^[a-zA-Z0-9-]+$", + "example": "12345678-1234-1234-1234-123456789012" }, - "description": "Unique identifier for the environment." + "description": "Unique identifier for the site" } ], "responses": { "202": { - "description": "Private network disassociation started", + "description": "Site deletion accepted", "content": { "application/hal+json": { "schema": { @@ -43054,8 +44637,8 @@ "properties": { "message": { "type": "string", - "const": "Disassociating environment from private network started.", - "description": "Confirmation message that the disassociation has been started." + "const": "Site deleted.", + "description": "Confirmation message indicating the site has been deleted." } } } @@ -43064,10 +44647,49 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/private-network" + "href": "https://api.acquia.com/v3/sites/550e8400-e29b-41d4-a716-446655440002" + }, + "parent": { + "href": "https://api.acquia.com/v3/sites" } }, - "message": "Disassociating environment from private network started." + "message": "Site deleted." + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } } } } @@ -43312,276 +44934,363 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Site_Service_API_BearerAuth": [] } ] } }, - "/environments/{environmentId}/trusted-proxies": { + "/sites/{siteId}/actions/duplicate": { "servers": [ { "url": "https://api.acquia.com/v3" } ], - "get": { - "summary": "Retrieves the trusted proxy configuration for the specified environment.", - "operationId": "findTrustedProxiesByEnvironmentId", + "post": { + "summary": "Duplicates a site from another given site.", + "operationId": "duplicateSiteBySiteId", + "x-acquia-operation": { + "provider": { + "service": "site-service-php" + } + }, "x-acquia-exposure": { + "stability": "production", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "environments:find-trusted-proxies" + "command": "sites:duplicate" } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" } }, "tags": [ - "Environments" + "Sites" ], "parameters": [ { - "name": "environmentId", + "name": "siteId", "in": "path", "required": true, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" + "pattern": "^[a-zA-Z0-9-]+$", + "example": "12345678-1234-1234-1234-123456789012" }, - "description": "Unique identifier for the environment." + "description": "Unique identifier for the site" } ], - "responses": { - "200": { - "description": "Trusted proxy configuration details", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "description": "Trusted proxy configuration properties", - "properties": { - "cidrs_ipv4": { - "type": "array", - "description": "List of trusted IPv4 CIDR blocks.", - "items": { - "type": "string" - } - }, - "cidrs_ipv6": { - "type": "array", - "description": "List of trusted IPv6 CIDR blocks.", - "items": { - "type": "string" - } - }, - "associated_cdns": { - "type": "object", - "description": "Map of CDN configurations associated with this environment, keyed by CDN name.", - "additionalProperties": { - "type": "object", - "properties": { - "label": { - "type": "string", - "description": "Display label for the CDN." - }, - "is_enabled": { - "type": "boolean", - "description": "Whether the CDN is enabled." - } - }, - "required": [ - "label", - "is_enabled" - ] - } - } - }, - "required": [ - "cidrs_ipv4", - "cidrs_ipv6", - "associated_cdns" - ] + "requestBody": { + "description": "Site duplication request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "environment_mapping": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+:[a-zA-Z0-9-]+$", + "description": "Environment mapping in the format 'sourceEnvId:targetEnvId'" }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", + "description": "Array of environment mappings. You must provide exactly one environment mapping. Each entry maps a source environment ID to a target environment ID, separated by a colon.\n", + "minItems": 1, + "maxItems": 1, + "example": [ + "0ebce493-9d09-479d-a9a8-138a206fa687:a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + }, + "site_name": { + "type": "string", + "description": "Machine name for the duplicated site. Must start with a lowercase letter and contain only lowercase letters and numbers. Maximum 14 characters.\n", + "minLength": 1, + "maxLength": 14, + "pattern": "^[a-z][a-z0-9]*$", + "example": "dupsite" + }, + "site_label": { + "type": "string", + "description": "Human-readable label for the duplicated site. Must only contain letters, numbers, and spaces. Maximum 50 characters.\n", + "minLength": 1, + "maxLength": 50, + "example": "Duplicated Site" + }, + "site_id": { + "type": "string", + "format": "uuid", + "description": "An optional explicit UUID for the new duplicated site. A UUID is generated automatically if omitted.", + "example": "f1a2b3c4-d5e6-7890-abcd-ef1234567890" + }, + "hook_argument": { + "type": "string", + "description": "Optional hook argument to pass to the duplication process.", + "example": "--verbose" + } + }, + "required": [ + "environment_mapping", + "site_name", + "site_label" + ], + "additionalProperties": false + }, + "examples": { + "duplicate_basic": { + "summary": "Duplicate a site with required fields", + "description": "Duplicates a site with a single environment mapping", + "value": { + "environment_mapping": [ + "0ebce493-9d09-479d-a9a8-138a206fa687:a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ], + "site_name": "dupsite", + "site_label": "Duplicated Site" + } + }, + "duplicate_with_options": { + "summary": "Duplicate a site with all options", + "description": "Duplicates a site specifying a custom site ID and hook argument", + "value": { + "environment_mapping": [ + "0ebce493-9d09-479d-a9a8-138a206fa687:a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ], + "site_name": "duphook", + "site_label": "Dup With Hook", + "site_id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890", + "hook_argument": "my-hook-arg" + } + } + } + } + } + }, + "responses": { + "202": { + "description": "Site duplication started", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", "properties": { - "href": { - "type": "string", - "anyOf": [ + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, "required": [ - "href" + "self" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] }, - "_embedded": { + { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] } - }, - "required": [ - "_links" ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Site duplication started.", + "description": "Confirmation message" + } + } } ] }, "example": { - "cidrs_ipv4": [ - "203.0.113.0/24" - ], - "cidrs_ipv6": [], - "associated_cdns": { - "cloudflare": { - "label": "Cloudflare", - "is_enabled": true - } - }, "_links": { "self": { - "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/trusted-proxies" + "href": "https://api.acquia.com/v3/sites/f1a2b3c4-d5e6-7890-abcd-ef1234567890" + }, + "parent": { + "href": "https://api.acquia.com/v3/sites" } - } + }, + "message": "Site duplication started." } } - }, - "links": { - "self": { - "operationId": "findTrustedProxiesByEnvironmentId", - "parameters": { - "environmentId": "$request.path.environmentId" + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } } } } @@ -43727,6 +45436,53 @@ } } }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, "500": { "description": "Internal Server Error", "content": { @@ -43779,111 +45535,63 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Site_Service_API_BearerAuth": [] } ] - }, - "put": { - "summary": "Updates the trusted proxy configuration for the specified environment.", - "operationId": "updateTrustedProxiesByEnvironmentId", + } + }, + "/sites/{siteId}/actions/recover": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "post": { + "summary": "Recovers a site that is scheduled for deletion", + "operationId": "recoverSiteBySiteId", + "x-acquia-operation": { + "provider": { + "service": "site-service-php" + } + }, "x-acquia-exposure": { + "stability": "production", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "environments:update-trusted-proxies" + "command": "sites:recover" } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" } }, "tags": [ - "Environments" + "Sites" ], "parameters": [ { - "name": "environmentId", + "name": "siteId", "in": "path", "required": true, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" + "pattern": "^[a-zA-Z0-9-]+$", + "example": "12345678-1234-1234-1234-123456789012" }, - "description": "Unique identifier for the environment." + "description": "Unique identifier for the site" } ], - "requestBody": { - "description": "Update trusted proxies request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "cidrs_ipv4": { - "type": "array", - "description": "List of trusted IPv4 CIDR blocks.", - "items": { - "type": "string", - "description": "An IPv4 CIDR block (e.g. \"203.0.113.0/24\")." - } - }, - "cidrs_ipv6": { - "type": "array", - "description": "List of trusted IPv6 CIDR blocks.", - "items": { - "type": "string", - "description": "An IPv6 CIDR block (e.g. \"2001:db8::/32\")." - } - }, - "associated_cdns": { - "type": "array", - "description": "List of CDN names to associate with this environment.", - "items": { - "type": "string", - "enum": [ - "akamai", - "cloudflare", - "fastly" - ] - } - } - }, - "additionalProperties": false, - "minProperties": 1 - }, - "examples": { - "update": { - "summary": "Update trusted proxy configuration", - "value": { - "cidrs_ipv4": [ - "203.0.113.0/24" - ], - "cidrs_ipv6": [], - "associated_cdns": [ - "cloudflare" - ] - } - } - } - } - } - }, "responses": { - "200": { - "description": "Trusted proxy configuration updated", + "202": { + "description": "Site recovery started", "content": { "application/hal+json": { "schema": { @@ -44047,8 +45755,8 @@ "properties": { "message": { "type": "string", - "const": "Trusted Proxies updated successfully.", - "description": "Confirmation message that the configuration has been updated." + "const": "Site recovery started.", + "description": "Confirmation message indicating the site recovery has been initiated." } } } @@ -44057,46 +45765,13 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/trusted-proxies" - } - }, - "message": "Trusted Proxies updated successfully." - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" + "href": "https://api.acquia.com/v3/sites/11111111-1111-1111-1111-111111111111" }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "parent": { + "href": "https://api.acquia.com/v3/sites" } }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "message": "Site recovery started." } } } @@ -44341,106 +46016,63 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Site_Service_API_BearerAuth": [] } ] } }, - "/environments/{environmentId}/deployments": { + "/sites/{siteId}/actions/schedule-delete": { "servers": [ { "url": "https://api.acquia.com/v3" } ], - "get": { - "summary": "Retrieves a collection of deployments for the specified environment.", - "operationId": "getDeploymentsByEnvironmentId", - "tags": [ - "Deployments" - ], + "post": { + "summary": "Schedules a site for deletion", + "operationId": "scheduleDeleteSiteBySiteId", + "x-acquia-operation": { + "provider": { + "service": "site-service-php" + } + }, "x-acquia-exposure": { + "stability": "production", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "environments:list-deployments" + "command": "sites:schedule-delete" } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" } }, + "tags": [ + "Sites" + ], "parameters": [ { - "name": "environmentId", + "name": "siteId", "in": "path", "required": true, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." - }, - { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "example": 20 - } - }, - { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "minimum": 1, - "example": 10 - } - }, - { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" - }, - "example": "status=active;type=standard" - }, - { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + "pattern": "^[a-zA-Z0-9-]+$", + "example": "12345678-1234-1234-1234-123456789012" }, - "example": "name,-created_at" + "description": "Unique identifier for the site" } ], "responses": { - "200": { - "description": "OK", + "202": { + "description": "Site deletion scheduled", "content": { "application/hal+json": { "schema": { @@ -44588,309 +46220,834 @@ { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "_embedded" + "message" ] } ] }, { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Site deletion scheduled.", + "description": "Confirmation message indicating the site deletion has been scheduled." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sites/550e8400-e29b-41d4-a716-446655440002" + }, + "parent": { + "href": "https://api.acquia.com/v3/sites" + } + }, + "message": "Site deletion scheduled." + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "prev": { - "description": "Link to the previous page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "next": { - "description": "Link to the next page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Site_Service_API_BearerAuth": [] + } + ] + } + }, + "/codebases/{codebaseId}/sites": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Retrieves a list of sites associated with a codebase.", + "operationId": "getSitesByCodebaseId", + "x-acquia-operation": { + "provider": { + "service": "site-service-php" + } + }, + "x-acquia-exposure": { + "stability": "production", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + }, + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "codebases:list-sites" + } + } + }, + "tags": [ + "Sites" + ], + "parameters": [ + { + "name": "codebaseId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "550e8400-e29b-41d4-a716-446655441212" + }, + "description": "Unique identifier for the codebase" + }, + { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "status=active;type=standard" + }, + { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], "examples": [ { "href": "https://api.acquia.com/v3/resources/1" @@ -46045,89 +48202,63 @@ "allOf": [ { "type": "object", - "description": "Deployment properties", + "description": "A Site resource", "properties": { "id": { "type": "string", + "description": "The unique identifier of the site", "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the deployment." + "example": "12345678-1234-1234-1234-123456789012" }, - "environment_id": { + "name": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Identifier of the environment this deployment belongs to." + "description": "The machine name of the site. Must start with a lowercase letter and contain only lowercase letters and numbers.", + "minLength": 1, + "maxLength": 14, + "pattern": "^[a-z][a-z0-9]*$", + "example": "mysite" }, - "status": { + "label": { "type": "string", - "description": "Current status of the deployment.", - "enum": [ - "waiting", - "received", - "started", - "done", - "failed", - "error", - "killed" - ] + "description": "The human-readable label of the site", + "minLength": 1, + "maxLength": 50, + "example": "My Site 1" }, - "code_reference": { + "description": { "type": "string", - "description": "The code reference (e.g. branch or tag) deployed." - }, - "run_hooks": { - "type": "boolean", - "description": "Whether deployment hooks were run." - }, - "hooks_argument": { - "type": [ - "string", - "null" - ], - "description": "Additional arguments passed to deployment hooks." + "description": "A description of the site", + "maxLength": 512, + "example": "A production site for the marketing team." }, - "created_at": { + "codebase_id": { "type": "string", - "format": "date-time", - "description": "Timestamp when the deployment was created." + "description": "The unique identifier of the codebase this site belongs to", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "550e8400-e29b-41d4-a716-446655441210" }, - "started_at": { - "type": [ - "string", - "null" + "status": { + "type": "string", + "description": "The current lifecycle status of the site. ready indicates the site is active and operational. marked-for-deletion indicates the site has been scheduled for deletion and can still be recovered.\n", + "enum": [ + "ready", + "marked-for-deletion" ], - "format": "date-time", - "description": "Timestamp when the deployment started." + "example": "ready" }, - "completed_at": { - "type": [ - "string", - "null" - ], + "delete_at": { + "type": "string", "format": "date-time", - "description": "Timestamp when the deployment completed." - }, - "sender_id": { - "type": [ - "string", - "null" - ], - "description": "Identifier of the user or system that initiated the deployment." - }, - "logs": { - "type": [ - "string", - "null" - ], - "description": "Deployment log output." + "description": "ISO 8601 datetime indicating when the site is scheduled for deletion. Only present when status is marked-for-deletion.", + "example": "2025-06-15T00:00:00Z" } }, "required": [ "id", - "environment_id", - "status", - "code_reference", - "run_hooks", - "created_at" + "name", + "label", + "codebase_id", + "status" ] }, { @@ -46284,82 +48415,65 @@ ] }, "examples": { - "deployment_response": { - "summary": "Deployment collection with pagination", + "site_collection": { + "summary": "Site collection with pagination", "value": { "_links": { "self": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2&offset=2" + "href": "https://api.acquia.com/v3/sites?limit=2&offset=0" }, "limit": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?offset=2{&limit}", + "href": "https://api.acquia.com/v3/sites?offset=0{&limit}", "templated": true }, "offset": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2{&offset}", + "href": "https://api.acquia.com/v3/sites?limit=2{&offset}", "templated": true }, "filter": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2&offset=2{&filter}", + "href": "https://api.acquia.com/v3/sites?limit=2&offset=0{&filter}", "templated": true }, "sort": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2&offset=2{&sort}", + "href": "https://api.acquia.com/v3/sites?limit=2&offset=0{&sort}", "templated": true }, - "prev": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2&offset=0" - }, "next": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2&offset=4" + "href": "https://api.acquia.com/v3/sites?limit=2&offset=2" } }, "count": 2, - "total": 6, + "total": 4, "pagination": { - "total": 6, + "total": 4, "limit": 2, - "offset": 2 + "offset": 0 }, "_embedded": { "items": [ { - "id": "e0c9dff7-56b6-4c0d-bad0-0e6593f66cd3", - "environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", - "status": "done", - "code_reference": "tags/v1.0.0", - "run_hooks": true, - "hooks_argument": null, - "sender_id": null, - "created_at": "2025-04-01T13:01:06.603Z", - "started_at": "2025-04-01T13:01:10.123Z", - "completed_at": "2025-04-01T13:05:00.000Z", + "id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890", + "name": "mysite", + "label": "My Site", + "description": "A description of my site.", + "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", + "status": "ready", "_links": { "self": { - "href": "https://api.acquia.com/v3/deployments/e0c9dff7-56b6-4c0d-bad0-0e6593f66cd3" - }, - "environment": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323" + "href": "https://api.acquia.com/v3/sites/f1a2b3c4-d5e6-7890-abcd-ef1234567890" } } }, { - "id": "f1dae0f8-67c7-5d1e-cbe1-1f7604f77de4", - "environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", - "status": "failed", - "code_reference": "tags/v0.9.0", - "run_hooks": false, - "hooks_argument": null, - "sender_id": null, - "created_at": "2025-03-28T09:15:00.000Z", - "started_at": "2025-03-28T09:15:05.000Z", - "completed_at": "2025-03-28T09:18:00.000Z", + "id": "e2b3c4d5-f6a7-8901-bcde-f12345678901", + "name": "anothersite", + "label": "Another Site", + "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", + "status": "marked-for-deletion", + "delete_at": "2025-01-01T00:00:00Z", "_links": { "self": { - "href": "https://api.acquia.com/v3/deployments/f1dae0f8-67c7-5d1e-cbe1-1f7604f77de4" - }, - "environment": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323" + "href": "https://api.acquia.com/v3/sites/e2b3c4d5-f6a7-8901-bcde-f12345678901" } } } @@ -46600,96 +48714,107 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Site_Service_API_BearerAuth": [] } ] - }, - "post": { - "summary": "Starts a deployment for the specified environment.", - "operationId": "createDeploymentByEnvironmentId", - "tags": [ - "Deployments" - ], + } + }, + "/subscriptions/{subscriptionId}/sites": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Retrieves a list of sites associated with a subscription.", + "operationId": "getSitesBySubscriptionId", + "x-acquia-operation": { + "provider": { + "service": "site-service-php" + } + }, "x-acquia-exposure": { + "stability": "production", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "environments:create-deployment" + "command": "subscriptions:list-sites" } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" } }, + "tags": [ + "Sites" + ], "parameters": [ { - "name": "environmentId", + "name": "subscriptionId", "in": "path", "required": true, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" + "pattern": "^[a-zA-Z0-9-]+$", + "example": "550e8300-e29b-41d4-a716-446655441212" }, - "description": "Unique identifier for the environment." - } - ], - "requestBody": { - "description": "Deployment start request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "run_hooks": { - "type": "boolean", - "description": "Whether to run deployment hooks." - }, - "code_reference": { - "type": "string", - "description": "The code reference (branch or tag) to deploy." - }, - "hooks_argument": { - "type": "string", - "description": "Additional arguments passed to deployment hooks." - } - }, - "required": [ - "run_hooks", - "code_reference" - ], - "additionalProperties": false, - "minProperties": 1 - }, - "examples": { - "start_deployment": { - "summary": "Start a deployment", - "description": "Starts a deployment for the specified environment.", - "value": { - "run_hooks": true, - "code_reference": "release-2025-01-15", - "hooks_argument": "--migrate --clear-cache" - } - } - } + "description": "Unique identifier for the subscription" + }, + { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 } + }, + { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "status=active;type=standard" + }, + { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" } - }, + ], "responses": { - "202": { - "description": "Deployment started", + "200": { + "description": "OK", "content": { "application/hal+json": { "schema": { @@ -46837,898 +48962,970 @@ { "type": "object", "properties": { - "message": { - "type": "string", - "description": "The message content" + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] } }, "required": [ - "message" + "_embedded" ] } ] }, { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Deployment started.", - "description": "Confirmation message that the deployment has been started." - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/deployments/e0c9dff7-56b6-4c0d-bad0-0e6593f66cd3" - } - }, - "message": "Deployment started." - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Environment_Service_API_BearerAuth": [] - } - ] - } - }, - "/environments/{environmentId}/code-deploy": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "get": { - "summary": "Retrieves the code deploy concurrency setting for the environment.", - "operationId": "findCodeDeployByEnvironmentId", - "tags": [ - "Code Deploys" - ], - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "environments:find-code-deploy" - } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" - } - }, - "parameters": [ - { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "concurrency": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "Maximum number of concurrent code deploys allowed for the environment." - } - }, - "required": [ - "concurrency" - ] - }, - { - "type": "object", - "properties": { - "_links": { + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "_links": { "type": "object", - "description": "HAL link object", "properties": { - "href": { - "type": "string", - "anyOf": [ + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" + ] }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" + "next": { + "description": "Link to the next page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" } }, "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } + "total", + "limit", + "offset" ] } }, "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" + "count", + "total", + "pagination" + ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + } }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" }, - "required": [ - "href" - ], - "examples": [ + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ { - "href": "https://api.acquia.com/v3/resources/1" + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } } ] } }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - }, - "example": { - "concurrency": 5, - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/code-deploy" - } - } - } - } - }, - "links": { - "self": { - "operationId": "findCodeDeployByEnvironmentId", - "parameters": { - "environmentId": "$request.path.environmentId" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } } - }, - "required": [ - "error", - "message" ] }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Environment_Service_API_BearerAuth": [] - } - ] - }, - "put": { - "summary": "Updates the code deploy concurrency setting for the environment.", - "operationId": "updateCodeDeployByEnvironmentId", - "tags": [ - "Code Deploys" - ], - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "environments:update-code-deploy" - } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" - } - }, - "parameters": [ - { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." - } - ], - "requestBody": { - "description": "Code deploy concurrency update request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "concurrency": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "Maximum number of concurrent code deploys allowed for the environment." - } - }, - "required": [ - "concurrency" - ], - "additionalProperties": false, - "minProperties": 1 - }, - "examples": { - "update_concurrency": { - "summary": "Update code deploy concurrency", - "description": "Sets the maximum concurrent code deploys for the environment.", - "value": { - "concurrency": 10 - } - } - } - } - } - }, - "responses": { - "200": { - "description": "Code deploy concurrency setting updated", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ { "allOf": [ { - "type": "object", - "properties": { - "_links": { + "allOf": [ + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "_links": { "type": "object", - "description": "HAL link object", + "description": "HAL links for the resource", "properties": { - "href": { - "type": "string", - "anyOf": [ + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, "required": [ - "href" + "self" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } } + }, + "required": [ + "items" ] } }, "required": [ - "self" - ], + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, "additionalProperties": { "type": "object", "description": "HAL link object", @@ -47787,501 +49984,331 @@ } ] } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true } }, - "required": [ - "_links" - ] + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } }, { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true } }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Code deploy settings updated successfully.", - "description": "Confirmation message that the concurrency setting has been updated." - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/code-deploy" - } - }, - "message": "Code deploy settings updated successfully." - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } } - }, - "required": [ - "error", - "message" ] }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Environment_Service_API_BearerAuth": [] - } - ] - } - }, - "/environments/{environmentId}/site-instances": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "post": { - "summary": "Associates a site with the specified environment.", - "operationId": "createSiteInstanceByEnvironmentId", - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "environments:create-site-instance" - } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" - } - }, - "tags": [ - "Site Instances" - ], - "parameters": [ - { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." - } - ], - "requestBody": { - "description": "Create site instance request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "site_id": { - "type": "string", - "description": "The UUID of the site to associate with this environment." - }, - "source_environment_id": { - "type": "string", - "description": "The UUID of the environment to copy files and database from during creation." - }, - "source_site_id": { - "type": "string", - "description": "The UUID of the source site to copy files from during creation." - }, - "hook_arguments": { - "type": "string", - "description": "Additional arguments to pass to deployment hooks during creation." - } - }, - "required": [ - "site_id" - ], - "additionalProperties": false - }, - "examples": { - "create": { - "summary": "Associate a site with an environment", - "value": { - "site_id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc" - } - } - } - } - } - }, - "responses": { - "202": { - "description": "Site instance creation started", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ { "allOf": [ { - "type": "object", - "properties": { - "_links": { + "allOf": [ + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "_links": { "type": "object", - "description": "HAL link object", + "description": "HAL links for the resource", "properties": { - "href": { - "type": "string", - "anyOf": [ + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, "required": [ - "href" + "self" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } } + }, + "required": [ + "items" ] } }, "required": [ - "self" - ], + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "sort": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" + } + }, "additionalProperties": { "type": "object", "description": "HAL link object", @@ -48340,50 +50367,337 @@ } ] } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} } - }, - "required": [ - "_links" - ] - }, + } + } + ], + "examples": [ { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" + }, + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", + "templated": true } }, - "required": [ - "message" - ] + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } } ] }, { "type": "object", "properties": { - "message": { - "type": "string", - "const": "Site instance creation started.", - "description": "Confirmation message that site association has been started." + "_embedded": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "description": "A Site resource", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the site", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "12345678-1234-1234-1234-123456789012" + }, + "name": { + "type": "string", + "description": "The machine name of the site. Must start with a lowercase letter and contain only lowercase letters and numbers.", + "minLength": 1, + "maxLength": 14, + "pattern": "^[a-z][a-z0-9]*$", + "example": "mysite" + }, + "label": { + "type": "string", + "description": "The human-readable label of the site", + "minLength": 1, + "maxLength": 50, + "example": "My Site 1" + }, + "description": { + "type": "string", + "description": "A description of the site", + "maxLength": 512, + "example": "A production site for the marketing team." + }, + "codebase_id": { + "type": "string", + "description": "The unique identifier of the codebase this site belongs to", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "550e8400-e29b-41d4-a716-446655441210" + }, + "status": { + "type": "string", + "description": "The current lifecycle status of the site. ready indicates the site is active and operational. marked-for-deletion indicates the site has been scheduled for deletion and can still be recovered.\n", + "enum": [ + "ready", + "marked-for-deletion" + ], + "example": "ready" + }, + "delete_at": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 datetime indicating when the site is scheduled for deletion. Only present when status is marked-for-deletion.", + "example": "2025-06-15T00:00:00Z" + } + }, + "required": [ + "id", + "name", + "label", + "codebase_id", + "status" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + }, + "required": [ + "items" + ] } - } + }, + "required": [ + "_embedded" + ] } ] }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323" + "examples": { + "site_collection": { + "summary": "Site collection with pagination", + "value": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sites?limit=2&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/sites?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/sites?limit=2{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/sites?limit=2&offset=0{&filter}", + "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/sites?limit=2&offset=0{&sort}", + "templated": true + }, + "next": { + "href": "https://api.acquia.com/v3/sites?limit=2&offset=2" + } + }, + "count": 2, + "total": 4, + "pagination": { + "total": 4, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890", + "name": "mysite", + "label": "My Site", + "description": "A description of my site.", + "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", + "status": "ready", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sites/f1a2b3c4-d5e6-7890-abcd-ef1234567890" + } + } + }, + { + "id": "e2b3c4d5-f6a7-8901-bcde-f12345678901", + "name": "anothersite", + "label": "Another Site", + "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", + "status": "marked-for-deletion", + "delete_at": "2025-01-01T00:00:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sites/e2b3c4d5-f6a7-8901-bcde-f12345678901" + } + } + } + ] + } } - }, - "message": "Site instance creation started." + } } } } @@ -48565,53 +50879,6 @@ } } }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, "500": { "description": "Internal Server Error", "content": { @@ -48664,47 +50931,47 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Site_Service_API_BearerAuth": [] } ] } }, - "/environments/{environmentId}/site-instances/actions/reorder": { + "/environments/{environmentId}/sites": { "servers": [ { "url": "https://api.acquia.com/v3" } ], - "post": { - "summary": "Updates the priority order of site instances for the environment.", - "operationId": "reorderSiteInstancesByEnvironmentId", - "tags": [ - "Site Instances" - ], + "get": { + "summary": "Retrieves a list of sites associated with an environment.", + "operationId": "getSitesByEnvironmentId", + "x-acquia-operation": { + "provider": { + "service": "site-service-php" + } + }, "x-acquia-exposure": { + "stability": "production", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "environments:reorder-site-instances" + "command": "environments:list-sites" } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" } }, + "tags": [ + "Sites" + ], "parameters": [ { "name": "environmentId", @@ -48712,52 +50979,59 @@ "required": true, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" + "pattern": "^[a-zA-Z0-9-]+$", + "example": "0ebce493-9d09-479d-a9a8-138a206fa687" }, - "description": "Unique identifier for the environment." + "description": "Unique identifier for the environment" + }, + { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "status=active;type=standard" + }, + { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" } ], - "requestBody": { - "description": "Site instances reorder request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "site_instance_ids": { - "type": "array", - "description": "List of site instance IDs in the desired priority order.", - "items": { - "type": "string", - "description": "Site instance identifier in the format {siteId}.{environmentId} (dot-separated site and environment UUIDs)." - } - } - }, - "required": [ - "site_instance_ids" - ], - "additionalProperties": false, - "minProperties": 1 - }, - "examples": { - "reorder": { - "summary": "Reorder site instances", - "description": "Provides the desired order of site instance IDs for the environment.", - "value": { - "site_instance_ids": [ - "3e8ecbec-ea7c-4260-8414-ef2938c859bc.a0c9dff7-56b6-4c0d-bad0-0e6593f66cd3", - "b1d8e2f8-67c7-5d1e-cbe1-1f7604f77de4.c2e9f3a9-78d8-6e2f-dcf2-2a8715a88ef5", - "d3fa04ba-89e9-4f3a-edf3-3b9826b99fa6.e4ab15cb-90fa-4a4b-fea4-4c0937c00ab7" - ] - } - } - } - } - } - }, "responses": { "200": { - "description": "Site instances reordered successfully", + "description": "OK", "content": { "application/hal+json": { "schema": { @@ -48905,1013 +51179,970 @@ { "type": "object", "properties": { - "message": { - "type": "string", - "description": "The message content" + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] } }, "required": [ - "message" + "_embedded" ] } ] }, { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Site instances reordered successfully.", - "description": "Confirmation message that the site instances have been reordered." - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/site-instances" - } - }, - "message": "Site instances reordered successfully." - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Environment_Service_API_BearerAuth": [] - } - ] - } - }, - "/site-instances/{siteId}.{environmentId}": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "get": { - "summary": "Get site instance details.", - "operationId": "findSiteInstanceBySiteIdAndEnvironmentId", - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "site-instances:find" - } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" - } - }, - "tags": [ - "Site Instances" - ], - "parameters": [ - { - "name": "siteId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the site." - }, - { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." - } - ], - "responses": { - "200": { - "description": "Site Instance details", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "description": "Site Instance properties", - "properties": { - "site_id": { - "type": "string", - "description": "The unique identifier of the site", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "environment_id": { - "type": "string", - "description": "The unique identifier of the environment", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "status": { - "type": "string", - "description": "The current status of the site instance", - "enum": [ - "active", - "creating", - "create-failed", - "updating", - "update-failed", - "deleting", - "deleted", - "delete-failed" - ] - }, - "health_status": { - "type": "object", - "description": "Health status information for the site instance", - "properties": { - "code": { - "type": "string", - "description": "Health status code" - }, - "summary": { - "type": "string", - "description": "Summary of the health status" + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] }, - "details": { - "type": "string", - "description": "Detailed health status information" + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] } - }, - "required": [ - "code", - "summary", - "details" ] }, - "domains": { - "type": "array", - "description": "List of domains associated with the site instance", - "items": { - "type": "string" - } - }, - "deployment_order": { - "type": [ - "integer", - "null" - ], - "description": "The order in which this site instance is deployed relative to others.", - "example": 1 - }, - "delete_at": { - "type": [ - "string", - "null" - ], - "format": "date-time", - "description": "The scheduled deletion date-time for this site instance, if set." - }, - "date_marked_for_deletion": { - "type": [ - "string", - "null" - ], - "format": "date-time", - "description": "The date-time when this site instance was marked for deletion." - }, - "deployed_vcs_ref": { - "type": "string", - "description": "The VCS reference (e.g. branch or tag) that is currently deployed on this site instance.", - "example": "MT1.0.10" - }, - "code_hash": { - "type": "string", - "description": "The commit hash of the code currently deployed on this site instance.", - "example": "f70f0eaffa3bdde6622d2a3aca1a5eb2034dd899" - }, - "protection_mode": { - "type": [ - "object", - "null" - ], - "description": "The current protection mode of the site instance", - "properties": { - "is_enabled": { - "type": "boolean", - "description": "Indicates whether the protection mode is enabled for the site instance" - }, - "is_inherited": { - "type": "boolean", - "description": "Indicates whether the protection mode is inherited from the environment" - } - }, - "required": [ - "is_enabled", - "is_inherited" - ] - } - }, - "required": [ - "site_id", - "environment_id", - "status", - "health_status", - "domains" - ] - }, - { - "type": "object", - "properties": { - "_links": { + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "_links": { "type": "object", - "description": "HAL link object", "properties": { - "href": { - "type": "string", - "anyOf": [ + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" + ] }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" + "next": { + "description": "Link to the next page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + "required": [ + "total", + "limit", + "offset" + ] + } + }, + "required": [ + "count", + "total", + "pagination" + ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" }, - "required": [ - "href" - ], - "examples": [ + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ { - "href": "https://api.acquia.com/v3/resources/1" + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } } ] } }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323" - } - }, - "site_id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", - "environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", - "status": "active", - "health_status": { - "code": "OK", - "summary": "The health status is OK.", - "details": "The site instance is active" - }, - "domains": [ - "example.com", - "example-2.com" - ], - "protection_mode": { - "is_enabled": true, - "is_inherited": true - }, - "deployment_order": 2, - "deployed_vcs_ref": "main", - "code_hash": "f70f0eaffa3bdde6622d2a3aca1a5eb2034dd899" - } - } - }, - "links": { - "self": { - "operationId": "findSiteInstanceBySiteIdAndEnvironmentId", - "parameters": { - "siteId": "$request.path.siteId", - "environmentId": "$request.path.environmentId" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } } - }, - "required": [ - "error", - "message" ] }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Environment_Service_API_BearerAuth": [] - } - ] - }, - "delete": { - "summary": "Dissociates a site and environment with no grace period.", - "operationId": "deleteSiteInstanceBySiteIdAndEnvironmentId", - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "site-instances:delete" - } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" - } - }, - "tags": [ - "Site Instances" - ], - "parameters": [ - { - "name": "siteId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the site." - }, - { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." - } - ], - "responses": { - "202": { - "description": "Site instance deletion started", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ { "allOf": [ { - "type": "object", - "properties": { - "_links": { + "allOf": [ + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "_links": { "type": "object", - "description": "HAL link object", + "description": "HAL links for the resource", "properties": { - "href": { - "type": "string", - "anyOf": [ + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, "required": [ - "href" + "self" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } } + }, + "required": [ + "items" ] } }, "required": [ - "self" - ], + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, "additionalProperties": { "type": "object", "description": "HAL link object", @@ -49970,463 +52201,331 @@ } ] } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true } }, - "required": [ - "_links" - ] + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } }, { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true } }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Site instance deletion started.", - "description": "Confirmation message that the deletion has been started." - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323" - } - }, - "message": "Site instance deletion started." - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } } - }, - "required": [ - "error", - "message" ] }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Environment_Service_API_BearerAuth": [] - } - ] - } - }, - "/site-instances/{siteId}.{environmentId}/files": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "post": { - "summary": "Copies files from one environment to another for the specified site instance.", - "operationId": "copySiteInstanceFilesBySiteIdAndEnvironmentId", - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "site-instances:copy-files" - } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" - } - }, - "tags": [ - "Site Instances" - ], - "parameters": [ - { - "name": "siteId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the site." - }, - { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." - } - ], - "requestBody": { - "description": "Copy site instance files request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "source_environment_id": { - "type": "string", - "description": "The UUID of the environment to copy files from." - } - }, - "required": [ - "source_environment_id" - ], - "additionalProperties": false - }, - "examples": { - "copy_files": { - "summary": "Copy files from another environment", - "value": { - "source_environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323" - } - } - } - } - } - }, - "responses": { - "202": { - "description": "File copy started", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ { "allOf": [ { - "type": "object", - "properties": { - "_links": { + "allOf": [ + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "_links": { "type": "object", - "description": "HAL link object", + "description": "HAL links for the resource", "properties": { - "href": { - "type": "string", - "anyOf": [ + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, "required": [ - "href" + "self" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } } + }, + "required": [ + "items" ] } }, "required": [ - "self" - ], + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "sort": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" + } + }, "additionalProperties": { "type": "object", "description": "HAL link object", @@ -50485,50 +52584,337 @@ } ] } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} } - }, - "required": [ - "_links" - ] - }, + } + } + ], + "examples": [ { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" + }, + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", + "templated": true } }, - "required": [ - "message" - ] + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } } ] }, { "type": "object", "properties": { - "message": { - "type": "string", - "const": "File copy started.", - "description": "Confirmation message that the file copy has been started." + "_embedded": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "description": "A Site resource", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the site", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "12345678-1234-1234-1234-123456789012" + }, + "name": { + "type": "string", + "description": "The machine name of the site. Must start with a lowercase letter and contain only lowercase letters and numbers.", + "minLength": 1, + "maxLength": 14, + "pattern": "^[a-z][a-z0-9]*$", + "example": "mysite" + }, + "label": { + "type": "string", + "description": "The human-readable label of the site", + "minLength": 1, + "maxLength": 50, + "example": "My Site 1" + }, + "description": { + "type": "string", + "description": "A description of the site", + "maxLength": 512, + "example": "A production site for the marketing team." + }, + "codebase_id": { + "type": "string", + "description": "The unique identifier of the codebase this site belongs to", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "550e8400-e29b-41d4-a716-446655441210" + }, + "status": { + "type": "string", + "description": "The current lifecycle status of the site. ready indicates the site is active and operational. marked-for-deletion indicates the site has been scheduled for deletion and can still be recovered.\n", + "enum": [ + "ready", + "marked-for-deletion" + ], + "example": "ready" + }, + "delete_at": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 datetime indicating when the site is scheduled for deletion. Only present when status is marked-for-deletion.", + "example": "2025-06-15T00:00:00Z" + } + }, + "required": [ + "id", + "name", + "label", + "codebase_id", + "status" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + }, + "required": [ + "items" + ] } - } + }, + "required": [ + "_embedded" + ] } ] }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323" + "examples": { + "site_collection": { + "summary": "Site collection with pagination", + "value": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sites?limit=2&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/sites?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/sites?limit=2{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/sites?limit=2&offset=0{&filter}", + "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/sites?limit=2&offset=0{&sort}", + "templated": true + }, + "next": { + "href": "https://api.acquia.com/v3/sites?limit=2&offset=2" + } + }, + "count": 2, + "total": 4, + "pagination": { + "total": 4, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890", + "name": "mysite", + "label": "My Site", + "description": "A description of my site.", + "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", + "status": "ready", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sites/f1a2b3c4-d5e6-7890-abcd-ef1234567890" + } + } + }, + { + "id": "e2b3c4d5-f6a7-8901-bcde-f12345678901", + "name": "anothersite", + "label": "Another Site", + "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", + "status": "marked-for-deletion", + "delete_at": "2025-01-01T00:00:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sites/e2b3c4d5-f6a7-8901-bcde-f12345678901" + } + } + } + ] + } } - }, - "message": "File copy started." + } } } } @@ -50710,53 +53096,6 @@ } } }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, "500": { "description": "Internal Server Error", "content": { @@ -50809,72 +53148,81 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Site_Service_API_BearerAuth": [] } ] } }, - "/site-instances/{siteId}.{environmentId}/actions/cancel": { + "/newrelic-accounts": { "servers": [ { "url": "https://api.acquia.com/v3" } ], - "post": { - "summary": "Dissociates a site and environment.", - "operationId": "cancelSiteInstanceBySiteIdAndEnvironmentId", + "get": { + "summary": "Retrieves a collection of New Relic accounts.", + "operationId": "getNewRelicAccounts", "x-acquia-exposure": { "channels": { "rest": { "enabled": true }, "cli": { - "enabled": true, - "command": "site-instances:cancel" + "enabled": false, + "command": "new-relic-accounts:list" } }, "stability": "development", "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + "internal" + ] }, "x-acquia-operation": { "provider": { - "service": "environment-service" + "service": "nr-provisioning-svc" } }, "tags": [ - "Site Instances" + "New Relic Accounts" ], "parameters": [ { - "name": "siteId", - "in": "path", - "required": true, + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the site." + "type": "integer", + "minimum": 0, + "example": 20 + } }, { - "name": "environmentId", - "in": "path", - "required": true, + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" }, - "description": "Unique identifier for the environment." + "example": "status=active;type=standard" } ], "responses": { - "202": { - "description": "Site instance cancellation started", + "200": { + "description": "OK", "content": { "application/hal+json": { "schema": { @@ -51022,362 +53370,264 @@ { "type": "object", "properties": { - "message": { - "type": "string", - "description": "The message content" + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] } }, "required": [ - "message" + "_embedded" ] } ] }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Site instance cancellation started.", - "description": "Confirmation message that the cancellation has been started." - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323" - } - }, - "message": "Site instance cancellation started." - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Environment_Service_API_BearerAuth": [] - } - ] - } - }, - "/site-instances/{siteId}.{environmentId}/actions/enable-protection-mode": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "post": { - "summary": "Enable Site Instance Protection mode.", - "operationId": "enableSiteInstanceProtectionModeBySiteIdAndEnvironmentId", - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "site-instances:enable-protection-mode" - } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" - } - }, - "tags": [ - "Site Instances" - ], - "parameters": [ - { - "name": "siteId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the site." - }, - { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." - } - ], - "responses": { - "202": { - "description": "Enable protection mode initiated", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ { "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, { "type": "object", "properties": { "_links": { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", "type": "object", - "description": "HAL link object", "properties": { "href": { "type": "string", @@ -51432,11 +53682,162 @@ "templated": true } ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" } }, - "required": [ - "self" - ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -51496,434 +53897,443 @@ ] } }, - "_embedded": { + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] } }, "required": [ - "_links" + "count", + "total", + "pagination" ] - }, + } + ], + "examples": [ { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true } }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Site instance protection mode enabled.", - "description": "Confirmation message" - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/site-instances/d3f7270e-c45f-4801-9308-5e8afe84a323.e3f7270e-c45f-4801-9308-5e8afe84a323" - } - }, - "message": "Site instance protection mode enabled." - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } }, - "message": { - "type": "string" + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } } - }, - "required": [ - "error", - "message" ] }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Environment_Service_API_BearerAuth": [] - } - ] - } - }, - "/site-instances/{siteId}.{environmentId}/actions/disable-protection-mode": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "post": { - "summary": "Disable Site Instance Protection mode.", - "operationId": "disableSiteInstanceProtectionModeBySiteIdAndEnvironmentId", - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "site-instances:disable-protection-mode" - } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" - } - }, - "tags": [ - "Site Instances" - ], - "parameters": [ - { - "name": "siteId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the site." - }, - { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." - } - ], - "responses": { - "202": { - "description": "Disable protection mode initiated", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ { "allOf": [ { - "type": "object", - "properties": { - "_links": { + "allOf": [ + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "_links": { "type": "object", - "description": "HAL link object", + "description": "HAL links for the resource", "properties": { - "href": { - "type": "string", - "anyOf": [ + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, "required": [ - "href" + "self" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } } + }, + "required": [ + "items" ] } }, "required": [ - "self" - ], + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, "additionalProperties": { "type": "object", "description": "HAL link object", @@ -51982,150 +54392,355 @@ } ] } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true } }, - "required": [ - "_links" - ] + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } }, { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true } }, - "required": [ - "message" - ] + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } } ] }, { "type": "object", "properties": { - "message": { - "type": "string", - "const": "Site instance protection mode disabled.", - "description": "Confirmation message" + "_embedded": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "entitlement_id": { + "type": "string", + "description": "Acquia entitlement UUID for this New Relic account." + }, + "subscription_id": { + "type": "string", + "description": "Acquia subscription UUID associated with this entitlement." + }, + "nr_account_id": { + "type": "string", + "description": "New Relic account ID; absent until provisioning completes." + }, + "status": { + "type": "string", + "enum": [ + "provisioning", + "active", + "deprovisioning", + "cancelled", + "transferred-out", + "failed" + ], + "description": "Lifecycle state of the New Relic account: provisioning — creation in progress; active — fully provisioned, NR account and admin invite issued; deprovisioning — cancellation in progress; cancelled — account cancelled, row retained for audit; transferred-out — account transferred out of Acquia parent, not cancelled by this service; failed — a step failed, re-trigger via a new broker event or ops tooling.\n" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Timestamp when the provisioning record was created." + } + }, + "required": [ + "entitlement_id", + "subscription_id", + "status", + "created_at" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + }, + "required": [ + "items" + ] } - } + }, + "required": [ + "_embedded" + ] } ] }, "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/site-instances/d3f7270e-c45f-4801-9308-5e8afe84a323.e3f7270e-c45f-4801-9308-5e8afe84a323" + "href": "https://api.acquia.com/v3/newrelic-accounts?filter=entitlement_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "limit": { + "href": "https://api.acquia.com/v3/newrelic-accounts?filter=entitlement_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/newrelic-accounts?filter=entitlement_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/newrelic-accounts{?filter}", + "templated": true } }, - "message": "Site instance protection mode disabled." - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." + "count": 1, + "total": 1, + "pagination": { + "total": 1, + "limit": 10, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "entitlement_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "subscription_id": "f9e8d7c6-b5a4-3210-fedc-ba9876543210", + "nr_account_id": "12345678", + "status": "active", + "created_at": "2026-05-26T10:00:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/newrelic-accounts?filter=entitlement_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890" + } } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." + } + ] + } } } } }, - "403": { - "description": "Forbidden", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] + "type": "object", + "properties": { + "error": { + "type": "string" }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] + "message": { + "type": "string" } + }, + "required": [ + "error", + "message" ] }, "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." + "error": "bad_request", + "message": "The request contains invalid or missing required fields." } } } }, - "404": { - "description": "Not Found", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { @@ -52150,11 +54765,11 @@ "properties": { "error": { "type": "string", - "const": "not_found" + "const": "unauthorized" }, "message": { "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." + "const": "You do not have permission to access this resource." } }, "required": [ @@ -52165,14 +54780,14 @@ ] }, "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." + "error": "unauthorized", + "message": "You do not have permission to access this resource." } } } }, - "409": { - "description": "Conflict", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -52197,11 +54812,11 @@ "properties": { "error": { "type": "string", - "const": "conflict" + "const": "forbidden" }, "message": { "type": "string", - "example": "The requested operation is invalid or cannot be completed." + "example": "You do not have permission to perform this action." } }, "required": [ @@ -52212,8 +54827,8 @@ ] }, "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." + "error": "forbidden", + "message": "You do not have permission to perform this action." } } } @@ -52270,20 +54885,21 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "New_Relic_Provisioning_API_BearerAuth": [] } ] } }, - "/site-instances/{siteId}.{environmentId}/actions/inherit-protection-mode": { + "/launch-groups/{launchGroupId}": { "servers": [ { "url": "https://api.acquia.com/v3" } ], - "post": { - "summary": "Inherit Site Instance Protection mode.", - "operationId": "inheritSiteInstanceProtectionModeBySiteIdAndEnvironmentId", + "get": { + "summary": "Retrieves a launch group by ID.", + "description": "Returns the launch group read model. Does not embed member site instances or domains; retrieve them from `GET /launch-groups/{launchGroupId}/member-site-instances` and `GET /launch-groups/{launchGroupId}/domains`. Requires the `view launch group` permission.", + "operationId": "findLaunchGroupByLaunchGroupId", "x-acquia-exposure": { "channels": { "rest": { @@ -52291,216 +54907,540 @@ }, "cli": { "enabled": true, - "command": "site-instances:inherit-protection-mode" + "command": "launch-groups:find" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "environment-service" + "service": "launch-group-service" } }, "tags": [ - "Site Instances" + "Launch Groups" ], "parameters": [ { - "name": "siteId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the site." - }, - { - "name": "environmentId", + "name": "launchGroupId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the environment." + "description": "Unique identifier for the launch group." } ], "responses": { - "202": { - "description": "Inherit protection mode initiated", + "200": { + "description": "Launch group details", "content": { "application/hal+json": { "schema": { "allOf": [ { - "allOf": [ - { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the launch group.", + "example": "b2c3d4e5-f6a7-8901-bcde-f12345678901" + }, + "name": { + "type": "string", + "pattern": "^[a-zA-Z0-9]{1,52}$", + "maxLength": 52, + "description": "The name of the launch group. Alphanumeric only; maximum 52 characters. Can be changed via `PUT /launch-groups/{launchGroupId}`; renaming does not regenerate `fqdn`, so the two may permanently disagree after a rename.", + "example": "MyLaunchGroup" + }, + "description": { + "type": [ + "string", + "null" + ], + "maxLength": 512, + "description": "An optional, free-text description of the launch group. Always present in the response; null if none is currently set -- either because none was ever supplied or because a later update via `PUT /launch-groups/{launchGroupId}` cleared it.", + "example": "Marketing campaign for Q3 launch" + }, + "codebase_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the codebase this launch group belongs to.", + "example": "d3f7270e-c45f-4801-9308-5e8afe84a323" + }, + "fqdn": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$", + "description": "The Acquia-generated fully-qualified domain name customers CNAME their custom domains to. Generated once from the lowercased name the group had at creation and never regenerated afterward, including when `name` is later changed via `PUT /launch-groups/{launchGroupId}`, so `name` and `fqdn` may permanently disagree.", + "example": "mylaunchgroup-a1b2c3d-lg.prod.acquia-sites.com" + }, + "status": { + "type": "string", + "enum": [ + "idle", + "switch-in-progress", + "failed", + "degraded" + ], + "description": "The current state of the launch group. `switch-in-progress` while a publish switch is running; `failed` if the last publish switch did not complete (safe to retry); `degraded` if the group has no Published member (for example, its Published site instance was deleted at the platform level).", + "example": "idle" + } + }, + "required": [ + "id", + "name", + "description", + "codebase_id", + "fqdn", + "status" + ] + }, + { + "type": "object", + "properties": { + "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "_links": { + "self": { "type": "object", - "description": "HAL links for the resource", + "description": "HAL link object", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "self" + "href" ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" }, - "required": [ - "href" - ], - "examples": [ + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - { + "_embedded": { "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] + "description": "Embedded resources (optional)", + "additionalProperties": {} } + }, + "required": [ + "_links" ] }, { "type": "object", "properties": { - "message": { - "type": "string", - "const": "Site instance protection mode inherited from environment.", - "description": "Confirmation message" + "_links": { + "type": "object", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "member-site-instances": { + "description": "The launch group's member site instances. Always present.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "domains": { + "description": "The domains assigned to the launch group. Always present.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "dns-recheck": { + "description": "Queues a DNS recheck for the launch group's domains. Always present.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "publish": { + "description": "Promotes a member to Published. Present unless `status` is `switch-in-progress`.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self", + "member-site-instances", + "domains", + "dns-recheck" + ] } } } @@ -52509,10 +55449,35 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/site-instances/d3f7270e-c45f-4801-9308-5e8afe84a323.e3f7270e-c45f-4801-9308-5e8afe84a323" + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + }, + "member-site-instances": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/member-site-instances" + }, + "domains": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains" + }, + "dns-recheck": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/actions/dns-recheck" + }, + "publish": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/actions/publish" } }, - "message": "Site instance protection mode inherited from environment." + "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", + "name": "MyLaunchGroup", + "description": "Marketing campaign for Q3 launch", + "codebase_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", + "fqdn": "mylaunchgroup-a1b2c3d-lg.prod.acquia-sites.com", + "status": "idle" + } + } + }, + "links": { + "self": { + "operationId": "findLaunchGroupByLaunchGroupId", + "parameters": { + "launchGroupId": "$request.path.launchGroupId" } } } @@ -52658,53 +55623,6 @@ } } }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, "500": { "description": "Internal Server Error", "content": { @@ -52757,20 +55675,14 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Launch_Group_API_BearerAuth": [] } ] - } - }, - "/site-instances/{siteId}.{environmentId}/actions/recover": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "post": { - "summary": "Recovers a site instance that is scheduled for deletion", - "operationId": "recoverSiteInstanceBySiteIdAndEnvironmentId", + }, + "put": { + "summary": "Partially updates a launch group's name and/or description.", + "description": "Updates a launch group's name and/or description. This is a partial update, not a full replace — `name` and `description` are each independently optional, and omitting either leaves it unchanged. There is no way to clear `name`; submitting it as null is rejected. An explicit null, an empty string, or a whitespace-only `description` all clear it. At least one of `name`/`description` must be present. The launch group's `fqdn` is generated once, from the name the group had at creation, and is never regenerated when `name` changes, so `name` and `fqdn` may permanently disagree after a rename. Requires the `manage launch group` permission.", + "operationId": "updateLaunchGroupByLaunchGroupId", "x-acquia-exposure": { "channels": { "rest": { @@ -52778,51 +55690,95 @@ }, "cli": { "enabled": true, - "command": "site-instances:recover" + "command": "launch-groups:update" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "environment-service" + "service": "launch-group-service" } }, "tags": [ - "Site Instances" + "Launch Groups" ], "parameters": [ { - "name": "siteId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the site." - }, - { - "name": "environmentId", + "name": "launchGroupId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the environment." + "description": "Unique identifier for the launch group." } ], + "requestBody": { + "description": "Update launch group request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the launch group. Alphanumeric only; maximum 52 characters. Optional: omitting this property leaves the current name unchanged. There is no way to clear the name -- submitting it as null is rejected. Renaming a launch group deliberately does not change its `fqdn` -- the FQDN is generated once, from the name the group had at creation, and is never regenerated, so `name` and `fqdn` may permanently disagree after a rename.", + "pattern": "^[a-zA-Z0-9]{1,52}$" + }, + "description": { + "type": [ + "string", + "null" + ], + "maxLength": 512, + "description": "An optional, free-text description of the launch group. Omitting this property leaves the current description unchanged. An explicit null value, an empty string (\"\"), or a string that normalizes to one, all clear it to no description. Leading and trailing whitespace (including common non-ASCII whitespace such as non-breaking or ideographic spaces, but not invisible zero-width characters or exotic control characters, which count as real content) is stripped before persisting, and the 512-character maxLength above is measured on the string after that stripping, not on the raw submitted value." + } + }, + "additionalProperties": false, + "minProperties": 1 + }, + "examples": { + "rename_only": { + "summary": "Rename a launch group", + "description": "Renames the launch group, leaving its description unchanged. The FQDN is unaffected by either field.", + "value": { + "name": "MyRenamedGroup" + } + }, + "description_only": { + "summary": "Update only the description", + "description": "Sets a new description, leaving the current name unchanged.", + "value": { + "description": "Marketing campaign for Q3 launch" + } + }, + "clear_description": { + "summary": "Clear an existing description", + "description": "An explicit null clears the description while renaming the group; submitting description as an empty string or whitespace-only has the same effect.", + "value": { + "name": "MyRenamedGroup", + "description": null + } + }, + "rename_and_set_description": { + "summary": "Rename and set a description together", + "value": { + "name": "MyRenamedGroup", + "description": "Marketing campaign for Q3 launch" + } + } + } + } + } + }, "responses": { "202": { - "description": "Site instance restoration started", + "description": "Launch group update started", "content": { "application/hal+json": { "schema": { @@ -52986,8 +55942,8 @@ "properties": { "message": { "type": "string", - "const": "Site instance restoration started.", - "description": "Confirmation message" + "const": "Launch group update started.", + "description": "Confirmation message that launch group update has been started." } } } @@ -52996,13 +55952,46 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/site-instances/d3f7270e-c45f-4801-9308-5e8afe84a323.e3f7270e-c45f-4801-9308-5e8afe84a323" + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + } + }, + "message": "Launch group update started." + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "parent": { - "href": "https://api.acquia.com/v3/site-instances" + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } } }, - "message": "Site instance restoration started." + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } } } } @@ -53148,53 +56137,6 @@ } } }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, "500": { "description": "Internal Server Error", "content": { @@ -53247,20 +56189,14 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Launch_Group_API_BearerAuth": [] } ] - } - }, - "/site-instances/{siteId}.{environmentId}/actions/schedule-delete": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "post": { - "summary": "Schedules a site instance for deletion.", - "operationId": "scheduleDeleteSiteInstanceBySiteIdAndEnvironmentId", + }, + "delete": { + "summary": "Deletes a launch group.", + "description": "Permanently deletes a launch group. Blocked with a `409` if any custom domains are still assigned to the group — remove all custom domains first. Member site instances are unaffected; deletion is permitted regardless of the group's `status`. Requires the `delete launch group` permission.", + "operationId": "deleteLaunchGroupByLaunchGroupId", "x-acquia-exposure": { "channels": { "rest": { @@ -53268,51 +56204,37 @@ }, "cli": { "enabled": true, - "command": "site-instances:schedule-delete" + "command": "launch-groups:delete" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "environment-service" + "service": "launch-group-service" } }, "tags": [ - "Site Instances" + "Launch Groups" ], "parameters": [ { - "name": "siteId", + "name": "launchGroupId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the site." - }, - { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." + "description": "Unique identifier for the launch group." } ], "responses": { "202": { - "description": "Site instance deletion scheduled", + "description": "Launch group deletion started", "content": { "application/hal+json": { "schema": { @@ -53476,8 +56398,8 @@ "properties": { "message": { "type": "string", - "const": "Site instance deletion scheduled.", - "description": "Confirmation message" + "const": "Launch group deletion started.", + "description": "Confirmation message that launch group deletion has been started." } } } @@ -53486,13 +56408,10 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/site-instances/d3f7270e-c45f-4801-9308-5e8afe84a323.e3f7270e-c45f-4801-9308-5e8afe84a323" - }, - "parent": { - "href": "https://api.acquia.com/v3/site-instances" + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" } }, - "message": "Site instance deletion scheduled." + "message": "Launch group deletion started." } } } @@ -53737,20 +56656,21 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Launch_Group_API_BearerAuth": [] } ] } }, - "/site-instances/{siteId}.{environmentId}/domains": { + "/launch-groups/{launchGroupId}/member-site-instances": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "summary": "Retrieves a collection of domains for the specified site instance.", - "operationId": "getDomainsBySiteIdAndEnvironmentId", + "summary": "Retrieves the collection of member site instances for a launch group.", + "description": "Returns the collection of site instances that are members of the launch group, including which one is currently Published. Requires the `view launch group` permission.", + "operationId": "getLaunchGroupMemberSiteInstancesByLaunchGroupId", "x-acquia-exposure": { "channels": { "rest": { @@ -53758,46 +56678,32 @@ }, "cli": { "enabled": true, - "command": "site-instances:list-domains" + "command": "launch-groups:list-member-site-instances" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "environment-service" + "service": "launch-group-service" } }, "tags": [ - "Domains" + "Launch Groups" ], "parameters": [ { - "name": "siteId", + "name": "launchGroupId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the site." - }, - { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." + "description": "Unique identifier for the launch group." }, { "name": "offset", @@ -53820,33 +56726,11 @@ "minimum": 1, "example": 10 } - }, - { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" - }, - "example": "status=active;type=standard" - }, - { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" - }, - "example": "name,-created_at" } ], "responses": { "200": { - "description": "Domain collection", + "description": "Launch group member site instance collection", "content": { "application/hal+json": { "schema": { @@ -54706,739 +57590,6 @@ } ] }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "filter": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" - } - } - }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" - } - } - } - ] - } - } - ] - }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "sort": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" - }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - } - ] - }, { "type": "object", "properties": { @@ -55451,20 +57602,29 @@ "allOf": [ { "type": "object", - "description": "Domain properties", "properties": { - "name": { + "site_id": { "type": "string", - "description": "The domain name." + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the member site instance's site.", + "example": "3e8ecbec-ea7c-4260-8414-ef2938c859bc" }, - "is_managed": { + "environment_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the environment the member site instance runs in.", + "example": "d3f7270e-c45f-4801-9308-5e8afe84a323" + }, + "is_published": { "type": "boolean", - "description": "Whether the domain is managed by Acquia." + "description": "Whether this member is currently the Published site instance serving the launch group's domains.", + "example": true } }, "required": [ - "name", - "is_managed" + "site_id", + "environment_id", + "is_published" ] }, { @@ -55623,40 +57783,39 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains?limit=2&offset=0" + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/member-site-instances?limit=1&offset=1" }, "limit": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains?offset=0{&limit}", + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/member-site-instances?offset=1{&limit}", "templated": true }, "offset": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains?limit=2{&offset}", + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/member-site-instances?limit=1{&offset}", "templated": true }, - "filter": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains?limit=2&offset=0{&filter}", - "templated": true + "prev": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/member-site-instances?limit=1&offset=0" }, - "sort": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains?limit=2&offset=0{&sort}", - "templated": true + "next": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/member-site-instances?offset=2&limit=1" } }, "count": 1, - "total": 1, + "total": 3, "pagination": { - "total": 1, - "limit": 2, - "offset": 0 + "total": 3, + "limit": 1, + "offset": 1 }, "_embedded": { "items": [ { - "name": "example.com", - "is_managed": false, + "site_id": "4a8ecbec-ea7c-4260-8414-ef2938c859bc", + "environment_id": "e3f7270e-c45f-4801-9308-5e8afe84a323", + "is_published": false, "_links": { "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains/example.com" + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/member-site-instances/4a8ecbec-ea7c-4260-8414-ef2938c859bc.e3f7270e-c45f-4801-9308-5e8afe84a323" } } } @@ -55895,20 +58054,21 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Launch_Group_API_BearerAuth": [] } ] } }, - "/site-instances/{siteId}.{environmentId}/domains/{domainName}": { + "/launch-groups/{launchGroupId}/member-site-instances/{siteId}.{environmentId}": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "summary": "Retrieves details for the specified domain on a site instance.", - "operationId": "findDomainBySiteIdAndEnvironmentIdAndDomainName", + "summary": "Retrieves a launch group member site instance.", + "description": "Returns the membership record for the site instance identified in the path — whether it is a member of the launch group and, if so, whether it is currently Published. Requires the `view launch group` permission.", + "operationId": "findLaunchGroupMemberSiteInstanceByLaunchGroupIdAndSiteIdAndEnvironmentId", "x-acquia-exposure": { "channels": { "rest": { @@ -55916,81 +58076,86 @@ }, "cli": { "enabled": true, - "command": "site-instances:find-domain" + "command": "launch-groups:find-member-site-instance" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "environment-service" + "service": "launch-group-service" } }, "tags": [ - "Domains" + "Launch Groups" ], "parameters": [ { - "name": "siteId", + "name": "launchGroupId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the site." + "description": "Unique identifier for the launch group." }, { - "name": "environmentId", + "name": "siteId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the environment." + "description": "Unique identifier for the site." }, { - "name": "domainName", + "name": "environmentId", "in": "path", "required": true, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$" + "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "The fully-qualified domain name (e.g., www.example.com)." + "description": "Unique identifier for the environment." } ], "responses": { "200": { - "description": "Domain details", + "description": "Launch group member site instance details", "content": { "application/hal+json": { "schema": { "allOf": [ { "type": "object", - "description": "Domain properties", "properties": { - "name": { + "site_id": { "type": "string", - "description": "The domain name." + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the member site instance's site.", + "example": "3e8ecbec-ea7c-4260-8414-ef2938c859bc" }, - "is_managed": { + "environment_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the environment the member site instance runs in.", + "example": "d3f7270e-c45f-4801-9308-5e8afe84a323" + }, + "is_published": { "type": "boolean", - "description": "Whether the domain is managed by Acquia." + "description": "Whether this member is currently the Published site instance serving the launch group's domains.", + "example": true } }, "required": [ - "name", - "is_managed" + "site_id", + "environment_id", + "is_published" ] }, { @@ -56134,23 +58299,24 @@ ] }, "example": { - "name": "example.com", - "is_managed": false, "_links": { "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains/example.com" + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/member-site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.e3f7270e-c45f-4801-9308-5e8afe84a323" } - } + }, + "site_id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "environment_id": "e3f7270e-c45f-4801-9308-5e8afe84a323", + "is_published": true } } }, "links": { "self": { - "operationId": "findDomainBySiteIdAndEnvironmentIdAndDomainName", + "operationId": "findLaunchGroupMemberSiteInstanceByLaunchGroupIdAndSiteIdAndEnvironmentId", "parameters": { + "launchGroupId": "$request.path.launchGroupId", "siteId": "$request.path.siteId", - "environmentId": "$request.path.environmentId", - "domainName": "$request.path.domainName" + "environmentId": "$request.path.environmentId" } } } @@ -56348,13 +58514,14 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Launch_Group_API_BearerAuth": [] } ] }, "put": { - "summary": "Adds a domain to the specified site instance.", - "operationId": "saveDomainBySiteIdAndEnvironmentIdAndDomainName", + "summary": "Adds a site instance to a launch group as a non-Published member.", + "description": "Adds the site instance identified in the path to the launch group as a non-Published member. Rejects with a `409` if the site instance is already a member of any launch group, or if its environment does not match the group's current environment (today's single-environment constraint). Requires the `manage launch group` permission.", + "operationId": "saveLaunchGroupMemberSiteInstanceByLaunchGroupIdAndSiteIdAndEnvironmentId", "x-acquia-exposure": { "channels": { "rest": { @@ -56362,61 +58529,57 @@ }, "cli": { "enabled": true, - "command": "site-instances:update-domain" + "command": "launch-groups:update-member-site-instance" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "environment-service" + "service": "launch-group-service" } }, "tags": [ - "Domains" + "Launch Groups" ], "parameters": [ { - "name": "siteId", + "name": "launchGroupId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the site." + "description": "Unique identifier for the launch group." }, { - "name": "environmentId", + "name": "siteId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the environment." + "description": "Unique identifier for the site." }, { - "name": "domainName", + "name": "environmentId", "in": "path", "required": true, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$" + "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "The fully-qualified domain name (e.g., www.example.com)." + "description": "Unique identifier for the environment." } ], "responses": { "202": { - "description": "Domain addition started", + "description": "Launch group member addition started", "content": { "application/hal+json": { "schema": { @@ -56580,8 +58743,8 @@ "properties": { "message": { "type": "string", - "const": "Domain addition started.", - "description": "Confirmation message that the domain addition has been started." + "const": "Launch group member addition started.", + "description": "Confirmation message that adding the member has been started." } } } @@ -56590,10 +58753,10 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains/example.com" + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/member-site-instances/4a8ecbec-ea7c-4260-8414-ef2938c859bc.e3f7270e-c45f-4801-9308-5e8afe84a323" } }, - "message": "Domain addition started." + "message": "Launch group member addition started." } } } @@ -56838,13 +59001,14 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Launch_Group_API_BearerAuth": [] } ] }, "delete": { - "summary": "Removes a domain from the specified site instance.", - "operationId": "deleteDomainBySiteIdAndEnvironmentIdAndDomainName", + "summary": "Deletes (detaches) a non-Published member from a launch group.", + "description": "Detaches the site instance identified in the path from the launch group. Does not delete the underlying site instance. Rejects with a `409` if the site instance is the group's Published member — publish a different member first. Any domains already assigned to the group are unaffected. Requires the `manage launch group` permission.", + "operationId": "deleteLaunchGroupMemberSiteInstanceByLaunchGroupIdAndSiteIdAndEnvironmentId", "x-acquia-exposure": { "channels": { "rest": { @@ -56852,61 +59016,57 @@ }, "cli": { "enabled": true, - "command": "site-instances:delete-domain" + "command": "launch-groups:delete-member-site-instance" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "environment-service" + "service": "launch-group-service" } }, "tags": [ - "Domains" + "Launch Groups" ], "parameters": [ { - "name": "siteId", + "name": "launchGroupId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the site." + "description": "Unique identifier for the launch group." }, { - "name": "environmentId", + "name": "siteId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the environment." + "description": "Unique identifier for the site." }, { - "name": "domainName", + "name": "environmentId", "in": "path", "required": true, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$" + "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "The fully-qualified domain name (e.g., www.example.com)." + "description": "Unique identifier for the environment." } ], "responses": { "202": { - "description": "Domain removal started", + "description": "Launch group member deletion started", "content": { "application/hal+json": { "schema": { @@ -57070,8 +59230,8 @@ "properties": { "message": { "type": "string", - "const": "Domain removal started.", - "description": "Confirmation message that the domain removal has been started." + "const": "Launch group member deletion started.", + "description": "Confirmation message that deleting (detaching) the member has been started." } } } @@ -57080,10 +59240,10 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains/example.com" + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/member-site-instances/4a8ecbec-ea7c-4260-8414-ef2938c859bc.e3f7270e-c45f-4801-9308-5e8afe84a323" } }, - "message": "Domain removal started." + "message": "Launch group member deletion started." } } } @@ -57328,20 +59488,21 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Launch_Group_API_BearerAuth": [] } ] } }, - "/site-instances/{siteId}.{environmentId}/domains/{domainName}/status": { + "/launch-groups/{launchGroupId}/actions/publish": { "servers": [ { "url": "https://api.acquia.com/v3" } ], - "get": { - "summary": "Retrieves the DNS status for the specified domain on a site instance.", - "operationId": "findDomainStatusBySiteIdAndEnvironmentIdAndDomainName", + "post": { + "summary": "Promotes a member to Published.", + "description": "Promotes the specified member to Published, moving all domains assigned to the launch group from the current Published site instance's domain routing to the new one. The switch runs asynchronously and sets `status` to `switch-in-progress` until it completes, or to `failed` if it does not; a failed switch can be retried. Rejects with a `409` if a publish switch is already in progress, if the target is not a current non-Published member, or if the switch would exceed the platform's per-site-instance domain limit. Requires the `manage launch group` permission.", + "operationId": "publishLaunchGroupByLaunchGroupId", "x-acquia-exposure": { "channels": { "rest": { @@ -57349,441 +59510,293 @@ }, "cli": { "enabled": true, - "command": "site-instances:find-domain-status" + "command": "launch-groups:publish" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "environment-service" + "service": "launch-group-service" } }, "tags": [ - "Domains" + "Launch Groups" ], "parameters": [ { - "name": "siteId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the site." - }, - { - "name": "environmentId", + "name": "launchGroupId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the environment." - }, - { - "name": "domainName", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$" - }, - "description": "The fully-qualified domain name (e.g., www.example.com)." + "description": "Unique identifier for the launch group." } ], + "requestBody": { + "description": "Publish (switch) request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "site_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the target member site to promote to Published. Must be a current non-Published member of the launch group." + }, + "environment_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the environment the target member site instance runs in." + } + }, + "required": [ + "site_id", + "environment_id" + ], + "additionalProperties": false + }, + "examples": { + "publish": { + "summary": "Promote a member to Published", + "description": "Switches the Published site instance, moving all assigned domains to the target member.", + "value": { + "site_id": "4a8ecbec-ea7c-4260-8414-ef2938c859bc", + "environment_id": "e3f7270e-c45f-4801-9308-5e8afe84a323" + } + } + } + } + } + }, "responses": { - "200": { - "description": "Domain DNS status details", + "202": { + "description": "Publish switch started", "content": { "application/hal+json": { "schema": { "allOf": [ { - "type": "object", - "description": "Domain DNS status properties", - "properties": { - "hostname": { - "type": "string", - "description": "The domain name." - }, - "site_id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Identifier of the site this domain belongs to." - }, - "environment_id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Identifier of the environment this domain belongs to." - }, - "ip_addresses": { - "type": "array", - "description": "List of IP addresses resolving for this domain.", - "items": { - "type": "string" - } - }, - "cnames": { - "type": "array", - "description": "List of CNAME records resolving for this domain.", - "items": { - "type": "string" - } - }, - "flags": { - "type": "object", - "description": "Status flags for the domain.", - "properties": { - "default": { - "type": "boolean", - "description": "Whether this is the default domain." - }, - "active": { - "type": "boolean", - "description": "Whether the domain is active." - }, - "dns_resolves": { - "type": "boolean", - "description": "Whether the domain DNS resolves correctly." - }, - "acquia_hosted": { - "type": "boolean", - "description": "Whether the domain is hosted on Acquia infrastructure." - } - }, - "required": [ - "default", - "active", - "dns_resolves", - "acquia_hosted" - ] - } - }, - "required": [ - "hostname", - "site_id", - "environment_id", - "ip_addresses", - "cnames", - "flags" - ] - }, - { - "type": "object", - "properties": { - "_links": { + "allOf": [ + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "_links": { "type": "object", - "description": "HAL link object", + "description": "HAL links for the resource", "properties": { - "href": { - "type": "string", - "anyOf": [ + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, "required": [ - "href" + "self" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] }, - "_embedded": { + { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - }, - "example": { - "hostname": "example.com", - "site_id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", - "environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", - "ip_addresses": [ - "203.0.113.10" - ], - "cnames": [], - "flags": { - "default": false, - "active": true, - "dns_resolves": true, - "acquia_hosted": true - }, - "_links": { - "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains/example.com/status" - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] } - }, - "required": [ - "error", - "message" ] }, { "type": "object", "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, "message": { "type": "string", - "const": "You do not have permission to access this resource." + "const": "Publish switch started.", + "description": "Confirmation message that the publish switch has been started." } - }, - "required": [ - "error", - "message" - ] + } } ] }, "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] + "_links": { + "self": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." + }, + "message": "Publish switch started." } } } }, - "404": { - "description": "Not Found", + "400": { + "description": "Validation Error", "content": { "application/json": { "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] + "type": "object", + "properties": { + "error": { + "type": "string" }, - { + "message": { "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } + "additionalProperties": { + "type": "string" }, - "required": [ - "error", - "message" - ] + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } } + }, + "required": [ + "error", + "message" ] }, "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } } } } }, - "500": { - "description": "Internal Server Error", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { @@ -57808,13 +59821,11 @@ "properties": { "error": { "type": "string", - "const": "system" + "const": "unauthorized" }, "message": { "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + "const": "You do not have permission to access this resource." } }, "required": [ @@ -57825,266 +59836,14 @@ ] }, "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Environment_Service_API_BearerAuth": [] - } - ] - } - }, - "/site-instances/{siteId}.{environmentId}/database": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "get": { - "summary": "Retrieves database details for the specified site instance.", - "operationId": "findDatabaseBySiteIdAndEnvironmentId", - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "site-instances:find-database" - } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" - } - }, - "tags": [ - "Site Instance Databases" - ], - "parameters": [ - { - "name": "siteId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the site." - }, - { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." - } - ], - "responses": { - "200": { - "description": "Database details", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "description": "Database properties", - "properties": { - "database_name": { - "type": "string", - "description": "The name of the database." - }, - "database_role": { - "type": "string", - "description": "The role of the database (e.g. the site username)." - } - }, - "required": [ - "database_name", - "database_role" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - }, - "example": { - "database_name": "site_dev", - "database_role": "site_dev_user", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database" - } - } - } - } - }, - "links": { - "self": { - "operationId": "findDatabaseBySiteIdAndEnvironmentId", - "parameters": { - "siteId": "$request.path.siteId", - "environmentId": "$request.path.environmentId" + "error": "unauthorized", + "message": "You do not have permission to access this resource." } } } }, - "401": { - "description": "Unauthorized", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -58109,11 +59868,11 @@ "properties": { "error": { "type": "string", - "const": "unauthorized" + "const": "forbidden" }, "message": { "type": "string", - "const": "You do not have permission to access this resource." + "example": "You do not have permission to perform this action." } }, "required": [ @@ -58124,14 +59883,14 @@ ] }, "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." + "error": "forbidden", + "message": "You do not have permission to perform this action." } } } }, - "403": { - "description": "Forbidden", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { @@ -58156,11 +59915,11 @@ "properties": { "error": { "type": "string", - "const": "forbidden" + "const": "not_found" }, "message": { "type": "string", - "example": "You do not have permission to perform this action." + "example": "The resource you are trying to access does not exist, or you do not have access to it." } }, "required": [ @@ -58171,14 +59930,14 @@ ] }, "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." } } } }, - "404": { - "description": "Not Found", + "409": { + "description": "Conflict", "content": { "application/json": { "schema": { @@ -58203,11 +59962,11 @@ "properties": { "error": { "type": "string", - "const": "not_found" + "const": "conflict" }, "message": { "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." + "example": "The requested operation is invalid or cannot be completed." } }, "required": [ @@ -58218,8 +59977,8 @@ ] }, "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." } } } @@ -58276,13 +60035,21 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Launch_Group_API_BearerAuth": [] } ] - }, + } + }, + "/launch-groups/{launchGroupId}/actions/dns-recheck": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], "post": { - "summary": "Copies a database from another environment to the specified site instance.", - "operationId": "copySiteInstanceDatabaseBySiteIdAndEnvironmentId", + "summary": "Queues a DNS recheck for all domains assigned to the launch group.", + "description": "Queues a background task that re-resolves the DNS cutover status for every domain assigned to the launch group and returns immediately. Reload `GET /launch-groups/{launchGroupId}/domains` once the task completes to see updated statuses. Only one recheck may be in-progress per group at a time — returns `409` if one is already queued or running. Requires the `manage launch group` permission.", + "operationId": "recheckLaunchGroupDnsByLaunchGroupId", "x-acquia-exposure": { "channels": { "rest": { @@ -58290,79 +60057,37 @@ }, "cli": { "enabled": true, - "command": "site-instances:copy-database" + "command": "launch-groups:dns-recheck" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "environment-service" + "service": "launch-group-service" } }, "tags": [ - "Site Instance Databases" + "Launch Groups" ], "parameters": [ { - "name": "siteId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the site." - }, - { - "name": "environmentId", + "name": "launchGroupId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the environment." + "description": "Unique identifier for the launch group." } ], - "requestBody": { - "description": "Copy site instance database request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "source_environment_id": { - "type": "string", - "description": "The UUID of the environment to copy the database from." - } - }, - "required": [ - "source_environment_id" - ], - "additionalProperties": false - }, - "examples": { - "copy_database": { - "summary": "Copy database from another environment", - "value": { - "source_environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323" - } - } - } - } - } - }, "responses": { "202": { - "description": "Database copy started", + "description": "DNS recheck queued", "content": { "application/hal+json": { "schema": { @@ -58526,8 +60251,8 @@ "properties": { "message": { "type": "string", - "const": "Database copy started.", - "description": "Confirmation message that the database copy has been started." + "const": "DNS recheck queued.", + "description": "Confirmation message that a DNS recheck has been queued for all domains assigned to the launch group." } } } @@ -58536,46 +60261,10 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database" - } - }, - "message": "Database copy started." - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" } }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "message": "DNS recheck queued." } } } @@ -58820,20 +60509,21 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Launch_Group_API_BearerAuth": [] } ] } }, - "/site-instances/{siteId}.{environmentId}/database/connection": { + "/launch-groups/{launchGroupId}/domains": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "summary": "Retrieves database connection credentials for the specified site instance.", - "operationId": "findDatabaseConnectionBySiteIdAndEnvironmentId", + "summary": "Retrieves the collection of domains assigned to a launch group.", + "description": "Returns a paginated, filterable collection of domains assigned to the launch group, including each domain's cached DNS status and last-checked timestamp. Does not include Standby domains (domains that exist on a member site instance but are not yet assigned to the group). Requires the `view launch group` permission.\n\nFilter syntax: `filter=name=@{substring}` (domain name contains the substring). `name` is the only filterable field.", + "operationId": "getLaunchGroupDomainsByLaunchGroupId", "x-acquia-exposure": { "channels": { "rest": { @@ -58841,546 +60531,70 @@ }, "cli": { "enabled": true, - "command": "site-instances:find-database-connection" + "command": "launch-groups:list-domains" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "environment-service" + "service": "launch-group-service" } }, "tags": [ - "Site Instance Databases" + "Launch Groups" ], "parameters": [ { - "name": "siteId", + "name": "launchGroupId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the site." + "description": "Unique identifier for the launch group." }, { - "name": "environmentId", - "in": "path", - "required": true, + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" }, - "description": "Unique identifier for the environment." + "example": "status=active;type=standard" } ], "responses": { "200": { - "description": "Database connection credential details", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "description": "Database connection credential properties", - "properties": { - "db_host": { - "type": "string", - "description": "The database host." - }, - "name": { - "type": "string", - "description": "The database name." - }, - "password": { - "type": "string", - "description": "The database password." - }, - "user_name": { - "type": "string", - "description": "The database username." - }, - "ssh_host": { - "type": "string", - "description": "The SSH host for tunneling to the database." - } - }, - "required": [ - "db_host", - "name", - "password", - "user_name", - "ssh_host" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - }, - "example": { - "db_host": "db.example.com", - "name": "site_dev", - "password": "s3cr3t", - "user_name": "site_dev_user", - "ssh_host": "site.dev.ssh.hosted.acquia-sites.com", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/connection" - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Environment_Service_API_BearerAuth": [] - } - ] - } - }, - "/site-instances/{siteId}.{environmentId}/database/backups": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "get": { - "summary": "Retrieves a collection of database backups for the specified site instance.", - "operationId": "getDatabaseBackupsBySiteIdAndEnvironmentId", - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "site-instances:list-database-backups" - } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" - } - }, - "tags": [ - "Site Instance Databases" - ], - "parameters": [ - { - "name": "siteId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the site." - }, - { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." - }, - { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "example": 20 - } - }, - { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "minimum": 1, - "example": 10 - } - }, - { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" - }, - "example": "status=active;type=standard" - }, - { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" - }, - "example": "name,-created_at" - } - ], - "responses": { - "200": { - "description": "Database backup collection", + "description": "Launch group domain collection", "content": { "application/hal+json": { "schema": { @@ -60624,354 +61838,250 @@ ] }, { - "allOf": [ - { - "allOf": [ - { + "type": "object", + "properties": { + "_links": { + "properties": { + "self": { "type": "object", + "description": "HAL link object", "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" } - }, - "required": [ - "self" ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "description": "The target URI of the link (can be a URI or URI template)" }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "_links" + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] }, - { + "launch-group": { + "description": "The launch group these domains are assigned to. Always present.", "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" } - }, - "required": [ - "items" - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "_embedded" + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { + }, + "dns-recheck": { + "description": "Queues a DNS recheck for the launch group's domains. Always present.", "type": "object", "properties": { - "sort": { - "allOf": [ + "href": { + "type": "string", + "anyOf": [ { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "format": "uri" }, { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] + "format": "uri-template" } ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" }, - "required": [ - "href" - ], - "examples": [ + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self", + "launch-group", + "dns-recheck" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", - "templated": true - } - }, - "_embedded": { - "items": [ + "required": [ + "href" + ], + "examples": [ { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } + "href": "https://api.acquia.com/v3/resources/1" }, { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } ] } } - ] + } }, { "type": "object", @@ -60985,37 +62095,45 @@ "allOf": [ { "type": "object", - "description": "Database backup properties", + "description": "A domain assigned to a launch group. The group's own `fqdn` is the domain with `is_removable: false`.", "properties": { - "id": { + "name": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the database backup." + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$", + "description": "The fully-qualified domain name.", + "example": "www.example.com" }, - "database_id": { + "dns_status": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Identifier of the database this backup belongs to." + "enum": [ + "pending", + "dns-updated", + "dns-not-updated", + "not-found" + ], + "description": "Cached DNS cutover status as of the last recheck. `pending` when the domain does not resolve yet; `dns-not-updated` when it resolves, but not to the launch group's `fqdn`; `dns-updated` when it resolves to the launch group's `fqdn`; `not-found` when the domain is not registered on the Published site instance. The launch group's own `fqdn` is always `dns-updated`. Updated only by `POST /launch-groups/{launchGroupId}/actions/dns-recheck`.", + "example": "pending" }, - "created_at": { - "type": "string", + "last_checked_at": { + "type": [ + "string", + "null" + ], "format": "date-time", - "description": "Timestamp when the backup was created." + "description": "Timestamp of the last DNS status check for this domain. Always present; null until the first DNS recheck.", + "example": "2026-07-20T14:32:00Z" }, - "type": { - "type": "string", - "enum": [ - "DAILY", - "ON_DEMAND" - ], - "description": "The type of backup." + "is_removable": { + "type": "boolean", + "description": "Whether the domain can be removed from the launch group. `false` only for the launch group's own `fqdn`; `true` for every customer-assigned domain.", + "example": true } }, "required": [ - "id", - "database_id", - "created_at", - "type" + "name", + "dns_status", + "last_checked_at", + "is_removable" ] }, { @@ -61174,42 +62292,50 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups?limit=2&offset=0" + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains?limit=1&offset=1" }, "limit": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups?offset=0{&limit}", + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains?offset=1{&limit}", "templated": true }, "offset": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups?limit=2{&offset}", + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains?limit=1{&offset}", "templated": true }, "filter": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups?limit=2&offset=0{&filter}", + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains?limit=1&offset=1{&filter}", "templated": true }, - "sort": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups?limit=2&offset=0{&sort}", - "templated": true + "launch-group": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + }, + "dns-recheck": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/actions/dns-recheck" + }, + "prev": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains?limit=1&offset=0" + }, + "next": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains?offset=2&limit=1" } }, "count": 1, - "total": 1, + "total": 3, "pagination": { - "total": 1, - "limit": 2, - "offset": 0 + "total": 3, + "limit": 1, + "offset": 1 }, "_embedded": { "items": [ { - "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "database_id": "b2c3d4e5-f6a7-8901-bcde-f01234567891", - "created_at": "2025-04-01T02:00:00.000Z", - "type": "DAILY", + "name": "www.example.com", + "dns_status": "pending", + "last_checked_at": null, + "is_removable": true, "_links": { "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups/a1b2c3d4-e5f6-7890-abcd-ef1234567890" + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains/www.example.com" } } } @@ -61448,13 +62574,21 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Launch_Group_API_BearerAuth": [] } ] - }, - "post": { - "summary": "Creates a database backup for the specified site instance.", - "operationId": "createDatabaseBackupBySiteIdAndEnvironmentId", + } + }, + "/launch-groups/{launchGroupId}/domains/{domainName}": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Retrieves details for the specified domain assigned to a launch group.", + "description": "Returns the cached DNS status and metadata for a single domain assigned to the launch group. Requires the `view launch group` permission.", + "operationId": "findLaunchGroupDomainByLaunchGroupIdAndDomainName", "x-acquia-exposure": { "channels": { "rest": { @@ -61462,228 +62596,253 @@ }, "cli": { "enabled": true, - "command": "site-instances:create-database-backup" + "command": "launch-groups:find-domain" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "environment-service" + "service": "launch-group-service" } }, "tags": [ - "Site Instance Databases" + "Launch Groups" ], "parameters": [ { - "name": "siteId", + "name": "launchGroupId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the site." + "description": "Unique identifier for the launch group." }, { - "name": "environmentId", + "name": "domainName", "in": "path", "required": true, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$" }, - "description": "Unique identifier for the environment." + "description": "The fully-qualified domain name (e.g., www.example.com)." } ], "responses": { - "202": { - "description": "Database backup creation started", + "200": { + "description": "Launch group domain details", "content": { "application/hal+json": { "schema": { "allOf": [ { - "allOf": [ - { + "type": "object", + "description": "A domain assigned to a launch group. The group's own `fqdn` is the domain with `is_removable: false`.", + "properties": { + "name": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$", + "description": "The fully-qualified domain name.", + "example": "www.example.com" + }, + "dns_status": { + "type": "string", + "enum": [ + "pending", + "dns-updated", + "dns-not-updated", + "not-found" + ], + "description": "Cached DNS cutover status as of the last recheck. `pending` when the domain does not resolve yet; `dns-not-updated` when it resolves, but not to the launch group's `fqdn`; `dns-updated` when it resolves to the launch group's `fqdn`; `not-found` when the domain is not registered on the Published site instance. The launch group's own `fqdn` is always `dns-updated`. Updated only by `POST /launch-groups/{launchGroupId}/actions/dns-recheck`.", + "example": "pending" + }, + "last_checked_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "Timestamp of the last DNS status check for this domain. Always present; null until the first DNS recheck.", + "example": "2026-07-20T14:32:00Z" + }, + "is_removable": { + "type": "boolean", + "description": "Whether the domain can be removed from the launch group. `false` only for the launch group's own `fqdn`; `true` for every customer-assigned domain.", + "example": true + } + }, + "required": [ + "name", + "dns_status", + "last_checked_at", + "is_removable" + ] + }, + { + "type": "object", + "properties": { + "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "_links": { + "self": { "type": "object", - "description": "HAL links for the resource", + "description": "HAL link object", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "self" + "href" ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" }, - "required": [ - "href" - ], - "examples": [ + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - { + "_embedded": { "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] + "description": "Embedded resources (optional)", + "additionalProperties": {} } + }, + "required": [ + "_links" ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Database backup started.", - "description": "Confirmation message that the database backup has been started." - } - } } ] }, "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups" + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains/www.example.com" } }, - "message": "Database backup started." + "name": "www.example.com", + "dns_status": "dns-updated", + "last_checked_at": "2026-07-20T14:32:00Z", + "is_removable": true + } + } + }, + "links": { + "self": { + "operationId": "findLaunchGroupDomainByLaunchGroupIdAndDomainName", + "parameters": { + "launchGroupId": "$request.path.launchGroupId", + "domainName": "$request.path.domainName" } } } @@ -61829,53 +62988,6 @@ } } }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, "500": { "description": "Internal Server Error", "content": { @@ -61928,20 +63040,14 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Launch_Group_API_BearerAuth": [] } ] - } - }, - "/site-instances/{siteId}.{environmentId}/database/backups/{backupId}": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "get": { - "summary": "Retrieves details for the specified database backup.", - "operationId": "findDatabaseBackupBySiteIdAndEnvironmentIdAndBackupId", + }, + "put": { + "summary": "Assigns a domain to a launch group.", + "description": "Assigns the domain named in the path to the launch group, recording it with `dns_status: pending`. With no request body, assigns a brand-new domain that has no prior site instance association. To assign a domain that already exists on a member site instance (a Standby domain) instead, provide `source_site_id` and `source_environment_id` in the request body — the domain is moved from that member onto the group's Published member. Rejects with a `409` if the domain is unavailable, if the source site instance is not a member of the group, if the domain does not exist on the source site instance, or if assigning it would exceed the platform's per-site-instance domain limit. Requires the `manage launch group` permission.", + "operationId": "saveLaunchGroupDomainByLaunchGroupIdAndDomainName", "x-acquia-exposure": { "channels": { "rest": { @@ -61949,263 +63055,301 @@ }, "cli": { "enabled": true, - "command": "site-instances:find-database-backup" + "command": "launch-groups:update-domain" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "environment-service" + "service": "launch-group-service" } }, "tags": [ - "Site Instance Databases" + "Launch Groups" ], "parameters": [ { - "name": "siteId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the site." - }, - { - "name": "environmentId", + "name": "launchGroupId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the environment." + "description": "Unique identifier for the launch group." }, { - "name": "backupId", + "name": "domainName", "in": "path", "required": true, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$" }, - "description": "Database backup identifier" + "description": "The fully-qualified domain name (e.g., www.example.com)." } ], + "requestBody": { + "description": "Assign domain request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "source_site_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the member site instance that currently owns the domain. Provide this (together with `source_environment_id`) to assign a Standby domain — one that already exists on a member site instance. Omit both fields entirely to assign a brand-new domain with no prior site instance association." + }, + "source_environment_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the environment the source member site instance runs in. Required together with `source_site_id`; must be provided if and only if `source_site_id` is provided." + } + }, + "dependentRequired": { + "source_site_id": [ + "source_environment_id" + ], + "source_environment_id": [ + "source_site_id" + ] + }, + "additionalProperties": false + }, + "examples": { + "assign_standby": { + "summary": "Assign an existing Standby domain", + "description": "Moves a domain that currently lives on a member site instance onto the launch group. Omit the request body entirely to assign a brand-new domain instead.", + "value": { + "source_site_id": "4a8ecbec-ea7c-4260-8414-ef2938c859bc", + "source_environment_id": "e3f7270e-c45f-4801-9308-5e8afe84a323" + } + } + } + } + } + }, "responses": { - "200": { - "description": "Database backup details", + "202": { + "description": "Domain assignment started", "content": { "application/hal+json": { "schema": { "allOf": [ { - "type": "object", - "description": "Database backup properties", - "properties": { - "id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the database backup." - }, - "database_id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Identifier of the database this backup belongs to." - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "Timestamp when the backup was created." - }, - "type": { - "type": "string", - "enum": [ - "DAILY", - "ON_DEMAND" - ], - "description": "The type of backup." - } - }, - "required": [ - "id", - "database_id", - "created_at", - "type" - ] - }, - { - "type": "object", - "properties": { - "_links": { + "allOf": [ + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "_links": { "type": "object", - "description": "HAL link object", + "description": "HAL links for the resource", "properties": { - "href": { - "type": "string", - "anyOf": [ + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, "required": [ - "href" + "self" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] }, - "_embedded": { + { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] } - }, - "required": [ - "_links" ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Domain assignment started.", + "description": "Confirmation message that the domain assignment has been started." + } + } } ] }, "example": { - "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "database_id": "b2c3d4e5-f6a7-8901-bcde-f01234567891", - "created_at": "2025-04-01T02:00:00.000Z", - "type": "DAILY", "_links": { "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups/a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "download": { - "href": "https://s3.amazonaws.com/acquia-backups/backup-a1b2c3d4.sql.gz?X-Amz-Expires=3600&X-Amz-Signature=abc123" + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains/www.example.com" } - } + }, + "message": "Domain assignment started." } } - }, - "links": { - "self": { - "operationId": "findDatabaseBackupBySiteIdAndEnvironmentIdAndBackupId", - "parameters": { - "siteId": "$request.path.siteId", - "environmentId": "$request.path.environmentId", - "backupId": "$request.path.backupId" + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } } } } @@ -62351,6 +63495,53 @@ } } }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, "500": { "description": "Internal Server Error", "content": { @@ -62403,13 +63594,14 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Launch_Group_API_BearerAuth": [] } ] }, "delete": { - "summary": "Deletes the specified database backup.", - "operationId": "deleteDatabaseBackupBySiteIdAndEnvironmentIdAndBackupId", + "summary": "Removes an assigned domain from a launch group.", + "description": "Destructively removes a custom domain from the launch group and the platform. This is irreversible — after this, requests to the domain return `404` until the customer updates their own DNS. Rejects with a `409` if `is_removable` is `false` (the group's own `fqdn`). Requires the `manage launch group` permission.", + "operationId": "deleteLaunchGroupDomainByLaunchGroupIdAndDomainName", "x-acquia-exposure": { "channels": { "rest": { @@ -62417,61 +63609,47 @@ }, "cli": { "enabled": true, - "command": "site-instances:delete-database-backup" + "command": "launch-groups:delete-domain" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "environment-service" + "service": "launch-group-service" } }, "tags": [ - "Site Instance Databases" + "Launch Groups" ], "parameters": [ { - "name": "siteId", + "name": "launchGroupId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the site." + "description": "Unique identifier for the launch group." }, { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." - }, - { - "name": "backupId", + "name": "domainName", "in": "path", "required": true, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$" }, - "description": "Database backup identifier" + "description": "The fully-qualified domain name (e.g., www.example.com)." } ], "responses": { "202": { - "description": "Database backup deletion started", + "description": "Domain removal started", "content": { "application/hal+json": { "schema": { @@ -62635,8 +63813,8 @@ "properties": { "message": { "type": "string", - "const": "Database backup deletion started.", - "description": "Confirmation message that the deletion has been started." + "const": "Domain removal started.", + "description": "Confirmation message that the domain removal has been started." } } } @@ -62645,10 +63823,10 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups/a1b2c3d4-e5f6-7890-abcd-ef1234567890" + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains/www.example.com" } }, - "message": "Database backup deletion started." + "message": "Domain removal started." } } } @@ -62893,20 +64071,21 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Launch_Group_API_BearerAuth": [] } ] } }, - "/site-instances/{siteId}.{environmentId}/database/backups/{backupId}/actions/restore": { + "/codebases/{codebaseId}/launch-groups": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "post": { - "summary": "Restores the specified database backup to the site instance.", - "operationId": "restoreDatabaseBackupBySiteIdAndEnvironmentIdAndBackupId", + "summary": "Creates a new launch group for a codebase.", + "description": "Creates a new launch group belonging to the specified codebase, designates the initial Published site instance, generates the group's shared FQDN, and registers it on the platform. Requires the `create launch group` permission.", + "operationId": "createLaunchGroupByCodebaseId", "x-acquia-exposure": { "channels": { "rest": { @@ -62914,61 +64093,133 @@ }, "cli": { "enabled": true, - "command": "site-instances:restore-database-backup" + "command": "codebases:create-launch-group" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "environment-service" + "service": "launch-group-service" } }, "tags": [ - "Site Instance Databases" + "Launch Groups" ], "parameters": [ { - "name": "siteId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the site." - }, - { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." - }, - { - "name": "backupId", + "name": "codebaseId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Database backup identifier" + "description": "Unique identifier for the codebase." } ], + "requestBody": { + "description": "Create launch group request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the launch group. Alphanumeric only; maximum 52 characters.", + "pattern": "^[a-zA-Z0-9]{1,52}$" + }, + "site_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the site to designate as the initial Published site instance." + }, + "environment_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the environment the initial Published site instance runs in." + }, + "description": { + "type": [ + "string", + "null" + ], + "maxLength": 512, + "description": "An optional, free-text description of the launch group. Can be changed later via `PUT /launch-groups/{launchGroupId}`. Leading and trailing whitespace (including common non-ASCII whitespace such as non-breaking or ideographic spaces, but not invisible zero-width characters or exotic control characters, which count as real content) is stripped before persisting, and the 512-character maxLength above is measured on the string after that stripping, not on the raw submitted value. A null value, an empty string (\"\"), or a string that normalizes to one, all mean no description." + }, + "additional_members": { + "type": "array", + "description": "Optional additional (non-Published) member site instances to add at creation time.", + "items": { + "type": "object", + "properties": { + "site_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the member site." + }, + "environment_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the environment the member site instance runs in." + } + }, + "required": [ + "site_id", + "environment_id" + ], + "additionalProperties": false + } + } + }, + "required": [ + "name", + "site_id", + "environment_id" + ], + "additionalProperties": false + }, + "examples": { + "create": { + "summary": "Create a new launch group", + "description": "Creates a launch group with a single initial Published site instance.", + "value": { + "name": "MyLaunchGroup", + "site_id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "environment_id": "e3f7270e-c45f-4801-9308-5e8afe84a323" + } + }, + "create_with_additional_members": { + "summary": "Create a new launch group with additional members", + "description": "Creates a launch group with an initial Published site instance and two additional standby members.", + "value": { + "name": "MyLaunchGroup", + "site_id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "environment_id": "e3f7270e-c45f-4801-9308-5e8afe84a323", + "description": "Marketing campaign for Q3 launch", + "additional_members": [ + { + "site_id": "4a8ecbec-ea7c-4260-8414-ef2938c859bc", + "environment_id": "e3f7270e-c45f-4801-9308-5e8afe84a323" + }, + { + "site_id": "5a8ecbec-ea7c-4260-8414-ef2938c859bc", + "environment_id": "e3f7270e-c45f-4801-9308-5e8afe84a323" + } + ] + } + } + } + } + } + }, "responses": { "202": { - "description": "Database backup restore started", + "description": "Launch group creation started", "content": { "application/hal+json": { "schema": { @@ -63132,8 +64383,8 @@ "properties": { "message": { "type": "string", - "const": "Database restore started.", - "description": "Confirmation message that the restore has been started." + "const": "Launch group creation started.", + "description": "Confirmation message that launch group creation has been started." } } } @@ -63142,10 +64393,46 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups/a1b2c3d4-e5f6-7890-abcd-ef1234567890" + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" } }, - "message": "Database restore started." + "message": "Launch group creation started." + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } } } } @@ -63390,23 +64677,14 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Launch_Group_API_BearerAuth": [] } ] - } - }, - "/deployments/{deploymentId}": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], + }, "get": { - "summary": "Retrieves the status of a deployment by deployment ID.", - "operationId": "findDeploymentByDeploymentId", - "tags": [ - "Deployments" - ], + "summary": "Retrieves a collection of launch groups for a codebase.", + "description": "Retrieves a paginated collection of launch groups belonging to the specified codebase. Requires the `view launch group` permission.", + "operationId": "getLaunchGroupsByCodebaseId", "x-acquia-exposure": { "channels": { "rest": { @@ -63414,550 +64692,59 @@ }, "cli": { "enabled": true, - "command": "deployments:find" + "command": "codebases:list-launch-groups" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "environment-service" + "service": "launch-group-service" } }, + "tags": [ + "Launch Groups" + ], "parameters": [ { - "name": "deploymentId", + "name": "codebaseId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the deployment." - } - ], - "responses": { - "200": { - "description": "Deployment details", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "description": "Deployment properties", - "properties": { - "id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the deployment." - }, - "environment_id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Identifier of the environment this deployment belongs to." - }, - "status": { - "type": "string", - "description": "Current status of the deployment.", - "enum": [ - "waiting", - "received", - "started", - "done", - "failed", - "error", - "killed" - ] - }, - "code_reference": { - "type": "string", - "description": "The code reference (e.g. branch or tag) deployed." - }, - "run_hooks": { - "type": "boolean", - "description": "Whether deployment hooks were run." - }, - "hooks_argument": { - "type": [ - "string", - "null" - ], - "description": "Additional arguments passed to deployment hooks." - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "Timestamp when the deployment was created." - }, - "started_at": { - "type": [ - "string", - "null" - ], - "format": "date-time", - "description": "Timestamp when the deployment started." - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "format": "date-time", - "description": "Timestamp when the deployment completed." - }, - "sender_id": { - "type": [ - "string", - "null" - ], - "description": "Identifier of the user or system that initiated the deployment." - }, - "logs": { - "type": [ - "string", - "null" - ], - "description": "Deployment log output." - } - }, - "required": [ - "id", - "environment_id", - "status", - "code_reference", - "run_hooks", - "created_at" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - }, - "example": { - "id": "e0c9dff7-56b6-4c0d-bad0-0e6593f66cd3", - "environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", - "status": "started", - "code_reference": "tags/v1.0.0", - "run_hooks": true, - "hooks_argument": "--skip-db-update", - "created_at": "2025-04-01T13:01:06.603Z", - "started_at": "2025-04-01T13:01:10.123Z", - "completed_at": null, - "sender_id": null, - "logs": null, - "_links": { - "self": { - "href": "https://api.acquia.com/v3/deployments/e0c9dff7-56b6-4c0d-bad0-0e6593f66cd3" - }, - "environment": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323" - } - } - } - } - }, - "links": { - "self": { - "operationId": "findDeploymentByDeploymentId", - "parameters": { - "deploymentId": "$request.path.deploymentId" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } + "description": "Unique identifier for the codebase." }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ { - "Environment_Service_API_BearerAuth": [] - } - ] - } - }, - "/deployments/{deploymentId}/actions/stop": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "post": { - "summary": "Stops a deployment by sending a stop request.", - "operationId": "stopDeploymentByDeploymentId", - "tags": [ - "Deployments" - ], - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "deployments:stop" + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 } }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" - } - }, - "parameters": [ { - "name": "deploymentId", - "in": "path", - "required": true, + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the deployment." + "type": "integer", + "minimum": 1, + "example": 10 + } } ], "responses": { - "202": { - "description": "Deployment stop initiated", + "200": { + "description": "Launch group collection", "content": { "application/hal+json": { "schema": { @@ -64105,352 +64892,206 @@ { "type": "object", "properties": { - "message": { - "type": "string", - "description": "The message content" + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] } }, "required": [ - "message" + "_embedded" ] } ] }, { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Deployment stop initiated.", - "description": "Confirmation message that the deployment stop has been initiated." - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/deployments/e0c9dff7-56b6-4c0d-bad0-0e6593f66cd3" - } - }, - "message": "Deployment stop initiated." - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Environment_Service_API_BearerAuth": [] - } - ] - } - }, - "/deployments/{deploymentId}/actions/terminate": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "post": { - "summary": "Terminates a deployment immediately.", - "operationId": "terminateDeploymentByDeploymentId", - "tags": [ - "Deployments" - ], - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "deployments:terminate" - } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" - } - }, - "parameters": [ - { - "name": "deploymentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the deployment." - } - ], - "responses": { - "202": { - "description": "Deployment termination is initiated", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ { "type": "object", "properties": { "_links": { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "prev": { + "description": "Link to the previous page (templated)", "type": "object", - "description": "HAL link object", "properties": { "href": { "type": "string", @@ -64505,439 +65146,10 @@ "templated": true } ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Deployment termination initiated.", - "description": "Confirmation message that the deployment termination has been initiated." - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/deployments/e0c9dff7-56b6-4c0d-bad0-0e6593f66cd3" - } - }, - "message": "Deployment termination initiated." - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Environment_Service_API_BearerAuth": [] - } - ] - } - }, - "/site-instances/{siteId}.{environmentId}/actions/reset-data": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "post": { - "summary": "Resets data for a site instance.", - "operationId": "resetSiteInstanceDataBySiteIdAndEnvironmentId", - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "site-instances:reset-data" - } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" - } - }, - "tags": [ - "Site Instances" - ], - "parameters": [ - { - "name": "siteId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the site." - }, - { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." - } - ], - "responses": { - "202": { - "description": "Site instance data reset started", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { + "next": { + "description": "Link to the next page (templated)", "type": "object", - "description": "HAL link object", "properties": { "href": { "type": "string", @@ -64992,11 +65204,162 @@ "templated": true } ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" } }, - "required": [ - "self" - ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -65056,105 +65419,816 @@ ] } }, - "_embedded": { + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] } }, "required": [ - "_links" + "count", + "total", + "pagination" ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } }, { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true } }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Site instance data reset started.", - "description": "Confirmation message" - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://cloud.acquia.com/api/site-instances/d3f7270e-c45f-4801-9308-5e8afe84a323.e3f7270e-c45f-4801-9308-5e8afe84a323" - }, - "parent": { - "href": "https://cloud.acquia.com/api/site-instances" - } - }, - "message": "Site instance data reset started." - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } }, - "message": { - "type": "string" + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } } - }, - "required": [ - "error", - "message" ] }, { "type": "object", "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." + "_embedded": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the launch group.", + "example": "b2c3d4e5-f6a7-8901-bcde-f12345678901" + }, + "name": { + "type": "string", + "pattern": "^[a-zA-Z0-9]{1,52}$", + "maxLength": 52, + "description": "The name of the launch group. Alphanumeric only; maximum 52 characters. Can be changed via `PUT /launch-groups/{launchGroupId}`; renaming does not regenerate `fqdn`, so the two may permanently disagree after a rename.", + "example": "MyLaunchGroup" + }, + "description": { + "type": [ + "string", + "null" + ], + "maxLength": 512, + "description": "An optional, free-text description of the launch group. Always present in the response; null if none is currently set -- either because none was ever supplied or because a later update via `PUT /launch-groups/{launchGroupId}` cleared it.", + "example": "Marketing campaign for Q3 launch" + }, + "codebase_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the codebase this launch group belongs to.", + "example": "d3f7270e-c45f-4801-9308-5e8afe84a323" + }, + "fqdn": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$", + "description": "The Acquia-generated fully-qualified domain name customers CNAME their custom domains to. Generated once from the lowercased name the group had at creation and never regenerated afterward, including when `name` is later changed via `PUT /launch-groups/{launchGroupId}`, so `name` and `fqdn` may permanently disagree.", + "example": "mylaunchgroup-a1b2c3d-lg.prod.acquia-sites.com" + }, + "status": { + "type": "string", + "enum": [ + "idle", + "switch-in-progress", + "failed", + "degraded" + ], + "description": "The current state of the launch group. `switch-in-progress` while a publish switch is running; `failed` if the last publish switch did not complete (safe to retry); `degraded` if the group has no Published member (for example, its Published site instance was deleted at the platform level).", + "example": "idle" + } + }, + "required": [ + "id", + "name", + "description", + "codebase_id", + "fqdn", + "status" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "member-site-instances": { + "description": "The launch group's member site instances. Always present.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "domains": { + "description": "The domains assigned to the launch group. Always present.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "dns-recheck": { + "description": "Queues a DNS recheck for the launch group's domains. Always present.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "publish": { + "description": "Promotes a member to Published. Present unless `status` is `switch-in-progress`.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self", + "member-site-instances", + "domains", + "dns-recheck" + ] + } + } + } + ] + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/launch-groups?limit=1&offset=1" + }, + "limit": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/launch-groups?offset=1{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/launch-groups?limit=1{&offset}", + "templated": true + }, + "prev": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/launch-groups?limit=1&offset=0" + }, + "next": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/launch-groups?offset=2&limit=1" + } + }, + "count": 1, + "total": 3, + "pagination": { + "total": 3, + "limit": 1, + "offset": 1 + }, + "_embedded": { + "items": [ + { + "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", + "name": "MyLaunchGroup", + "description": null, + "codebase_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", + "fqdn": "mylaunchgroup-a1b2c3d-lg.prod.acquia-sites.com", + "status": "idle", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + }, + "member-site-instances": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/member-site-instances" + }, + "domains": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains" + }, + "dns-recheck": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/actions/dns-recheck" + }, + "publish": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/actions/publish" + } + } + } + ] + } } } } }, - "403": { - "description": "Forbidden", + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { @@ -65179,11 +66253,11 @@ "properties": { "error": { "type": "string", - "const": "forbidden" + "const": "unauthorized" }, "message": { "type": "string", - "example": "You do not have permission to perform this action." + "const": "You do not have permission to access this resource." } }, "required": [ @@ -65194,14 +66268,14 @@ ] }, "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." + "error": "unauthorized", + "message": "You do not have permission to access this resource." } } } }, - "404": { - "description": "Not Found", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -65226,11 +66300,11 @@ "properties": { "error": { "type": "string", - "const": "not_found" + "const": "forbidden" }, "message": { "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." + "example": "You do not have permission to perform this action." } }, "required": [ @@ -65241,14 +66315,14 @@ ] }, "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." + "error": "forbidden", + "message": "You do not have permission to perform this action." } } } }, - "409": { - "description": "Conflict", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { @@ -65273,11 +66347,11 @@ "properties": { "error": { "type": "string", - "const": "conflict" + "const": "not_found" }, "message": { "type": "string", - "example": "The requested operation is invalid or cannot be completed." + "example": "The resource you are trying to access does not exist, or you do not have access to it." } }, "required": [ @@ -65288,8 +66362,8 @@ ] }, "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." } } } @@ -65346,23 +66420,21 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Launch_Group_API_BearerAuth": [] } ] } }, - "/environments/{environmentId}/domain-patterns": { + "/environments/{environmentId}/launch-groups": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "summary": "Retrieves a collection of domain patterns for the specified environment.", - "operationId": "getDomainPatternsByEnvironmentId", - "tags": [ - "Domain Patterns" - ], + "summary": "Retrieves a collection of launch groups for an environment.", + "description": "Retrieves a paginated collection of launch groups that have at least one member in the specified environment. Requires the `view launch group` permission.", + "operationId": "getLaunchGroupsByEnvironmentId", "x-acquia-exposure": { "channels": { "rest": { @@ -65370,23 +66442,22 @@ }, "cli": { "enabled": true, - "command": "environments:list-domain-patterns" + "command": "environments:list-launch-groups" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "environment-service" + "service": "launch-group-service" } }, + "tags": [ + "Launch Groups" + ], "parameters": [ { "name": "environmentId", @@ -65419,22 +66490,11 @@ "minimum": 1, "example": 10 } - }, - { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" - }, - "example": "name,-created_at" } ], "responses": { "200": { - "description": "OK", + "description": "Launch group collection", "content": { "application/hal+json": { "schema": { @@ -66294,356 +67354,6 @@ } ] }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "sort": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" - }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - } - ] - }, { "type": "object", "properties": { @@ -66660,19 +67370,56 @@ "id": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the domain pattern." + "description": "Unique identifier for the launch group.", + "example": "b2c3d4e5-f6a7-8901-bcde-f12345678901" }, - "pattern": { + "name": { "type": "string", - "maxLength": 455, - "pattern": "^(?=.*\\[site-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", - "description": "The domain pattern string, optionally followed by a single path segment (e.g. [site-name].acme.com/app). The [site-name] token is mandatory; [environment-name] is optional at environment level. Domain rules (enforced in service layer): ≤ 200 chars excluding token placeholders, at least 2 components (must contain .), no IP addresses, no forbidden suffixes (acquia-sites.com, hosting.acquia.com), no wildcards, no leading/trailing dot or hyphen, no consecutive dots, no query string or fragment. Path rules: optional, max 255 chars, must match ^/[A-Za-z0-9._-]+$, max 1 segment. DNS label limit: 63 chars after token substitution ([site-name] ≤ 14 chars). One pattern per environment.\n", - "example": "[site-name].acme.com" + "pattern": "^[a-zA-Z0-9]{1,52}$", + "maxLength": 52, + "description": "The name of the launch group. Alphanumeric only; maximum 52 characters. Can be changed via `PUT /launch-groups/{launchGroupId}`; renaming does not regenerate `fqdn`, so the two may permanently disagree after a rename.", + "example": "MyLaunchGroup" + }, + "description": { + "type": [ + "string", + "null" + ], + "maxLength": 512, + "description": "An optional, free-text description of the launch group. Always present in the response; null if none is currently set -- either because none was ever supplied or because a later update via `PUT /launch-groups/{launchGroupId}` cleared it.", + "example": "Marketing campaign for Q3 launch" + }, + "codebase_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the codebase this launch group belongs to.", + "example": "d3f7270e-c45f-4801-9308-5e8afe84a323" + }, + "fqdn": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$", + "description": "The Acquia-generated fully-qualified domain name customers CNAME their custom domains to. Generated once from the lowercased name the group had at creation and never regenerated afterward, including when `name` is later changed via `PUT /launch-groups/{launchGroupId}`, so `name` and `fqdn` may permanently disagree.", + "example": "mylaunchgroup-a1b2c3d-lg.prod.acquia-sites.com" + }, + "status": { + "type": "string", + "enum": [ + "idle", + "switch-in-progress", + "failed", + "degraded" + ], + "description": "The current state of the launch group. `switch-in-progress` while a publish switch is running; `failed` if the last publish switch did not complete (safe to retry); `degraded` if the group has no Published member (for example, its Published site instance was deleted at the platform level).", + "example": "idle" } }, "required": [ "id", - "pattern" + "name", + "description", + "codebase_id", + "fqdn", + "status" ] }, { @@ -66812,96 +67559,383 @@ "required": [ "_links" ] - } - ] - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - "examples": { - "domain_pattern_collection": { - "summary": "Domain pattern collection", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns" - }, - "limit": { - "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?limit=25{&offset}", - "templated": true - }, - "sort": { - "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?limit=25&offset=0{&sort}", - "templated": true - } - }, - "count": 1, - "total": 1, - "pagination": { - "total": 1, - "limit": 25, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "11111111-1111-1111-1111-111111111111", - "pattern": "[site-name].acme.com", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns/11111111-1111-1111-1111-111111111111" + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "member-site-instances": { + "description": "The launch group's member site instances. Always present.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "domains": { + "description": "The domains assigned to the launch group. Always present.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "dns-recheck": { + "description": "Queues a DNS recheck for the launch group's domains. Always present.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "publish": { + "description": "Promotes a member to Published. Present unless `status` is `switch-in-progress`.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self", + "member-site-instances", + "domains", + "dns-recheck" + ] + } + } + } + ] } } - } - ] - } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/launch-groups?limit=1&offset=1" + }, + "limit": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/launch-groups?offset=1{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/launch-groups?limit=1{&offset}", + "templated": true + }, + "prev": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/launch-groups?limit=1&offset=0" + }, + "next": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/launch-groups?offset=2&limit=1" } }, - "domain_pattern_collection_empty": { - "summary": "Empty domain pattern collection", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns" - }, - "limit": { - "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?limit=25{&offset}", - "templated": true - }, - "sort": { - "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?limit=25&offset=0{&sort}", - "templated": true + "count": 1, + "total": 3, + "pagination": { + "total": 3, + "limit": 1, + "offset": 1 + }, + "_embedded": { + "items": [ + { + "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", + "name": "MyLaunchGroup", + "description": null, + "codebase_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", + "fqdn": "mylaunchgroup-a1b2c3d-lg.prod.acquia-sites.com", + "status": "idle", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + }, + "member-site-instances": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/member-site-instances" + }, + "domains": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains" + }, + "dns-recheck": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/actions/dns-recheck" + }, + "publish": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/actions/publish" + } } - }, - "count": 0, - "total": 0, - "pagination": { - "total": 0, - "limit": 25, - "offset": 0 - }, - "_embedded": { - "items": [] } - } + ] } } } @@ -67136,16 +68170,19 @@ }, "security": [ { - "Environment_Service_API_BearerAuth": [] + "Launch_Group_API_BearerAuth": [] } ] - }, - "post": { - "summary": "Creates a domain pattern for the specified environment.", - "operationId": "createDomainPatternByEnvironmentId", - "tags": [ - "Domain Patterns" - ], + } + }, + "/subscriptions/{subscriptionUuid}/domains": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "operationId": "getDomainsBySubscriptionUuid", "x-acquia-exposure": { "channels": { "rest": { @@ -67153,69 +68190,83 @@ }, "cli": { "enabled": true, - "command": "environments:create-domain-pattern" + "command": "subscriptions:list-domains" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "environment-service" + "service": "cdn-service" } }, + "tags": [ + "CDNs" + ], + "summary": "Retrieves a collection of CDN domains for a subscription", + "description": "Retrieves a paginated list of CDN domains for the specified subscription.\n\n**Filtering:**\n - Format: `field=value` or `fieldvalue`\n - AND logic: semicolon (`;`) — `status=active;application_name=my-app`\n - OR logic: comma (`,`) — `status=active,status=pending`\n\n**Sorting:**\n- Format: Comma-delimited fields. Prefix with `-` for descending.\n- Example: `domain,-created_at`\n", "parameters": [ { - "name": "environmentId", + "name": "subscriptionUuid", "in": "path", "required": true, + "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" + } + }, + { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" }, - "description": "Unique identifier for the environment." + "example": "status=active;type=standard" + }, + { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" } ], - "requestBody": { - "description": "Create domain pattern request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "pattern": { - "type": "string", - "maxLength": 455, - "pattern": "^(?=.*\\[site-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", - "description": "The domain pattern to apply to all associated sites in this environment, optionally followed by a single path segment. The [site-name] token is mandatory; [environment-name] is optional. Domain ≤ 200 chars excluding token placeholders; optional path max 255 chars matching ^/[A-Za-z0-9._-]+$. Additional semantic rules (no IPs, no forbidden suffixes, no wildcards, one pattern per environment) are enforced at the service layer.\n", - "example": "[site-name].acme.com" - } - }, - "required": [ - "pattern" - ], - "additionalProperties": false - }, - "examples": { - "create_domain_pattern": { - "summary": "Create a domain pattern", - "value": { - "pattern": "[site-name].acme.com" - } - } - } - } - } - }, "responses": { - "202": { - "description": "Domain pattern creation initiated.", + "200": { + "description": "OK", "content": { "application/hal+json": { "schema": { @@ -67363,867 +68414,264 @@ { "type": "object", "properties": { - "message": { - "type": "string", - "description": "The message content" + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] } }, "required": [ - "message" + "_embedded" ] } ] }, { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "The domain pattern is being applied to all associated sites in this environment.", - "description": "Confirmation message that the domain pattern is being applied." - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns/11111111-1111-1111-1111-111111111111" - } - }, - "message": "The domain pattern is being applied to all associated sites in this environment." - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Environment_Service_API_BearerAuth": [] - } - ] - } - }, - "/environments/{environmentId}/domain-patterns/{patternId}": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "get": { - "summary": "Retrieves a domain pattern by environment ID and pattern ID.", - "operationId": "findDomainPatternByEnvironmentIdAndPatternId", - "tags": [ - "Domain Patterns" - ], - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "environments:find-domain-pattern" - } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" - } - }, - "parameters": [ - { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." - }, - { - "name": "patternId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the domain pattern." - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the domain pattern." - }, - "pattern": { - "type": "string", - "maxLength": 455, - "pattern": "^(?=.*\\[site-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", - "description": "The domain pattern string, optionally followed by a single path segment (e.g. [site-name].acme.com/app). The [site-name] token is mandatory; [environment-name] is optional at environment level. Domain rules (enforced in service layer): ≤ 200 chars excluding token placeholders, at least 2 components (must contain .), no IP addresses, no forbidden suffixes (acquia-sites.com, hosting.acquia.com), no wildcards, no leading/trailing dot or hyphen, no consecutive dots, no query string or fragment. Path rules: optional, max 255 chars, must match ^/[A-Za-z0-9._-]+$, max 1 segment. DNS label limit: 63 chars after token substitution ([site-name] ≤ 14 chars). One pattern per environment.\n", - "example": "[site-name].acme.com" - } - }, - "required": [ - "id", - "pattern" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { + "allOf": [ + { + "allOf": [ + { "type": "object", - "description": "HAL link object", "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } + }, + "required": [ + "self" ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } + "_links" ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - }, - "example": { - "id": "11111111-1111-1111-1111-111111111111", - "pattern": "[site-name].acme.com", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns/11111111-1111-1111-1111-111111111111" - } - } - } - } - }, - "links": { - "self": { - "operationId": "findDomainPatternByEnvironmentIdAndPatternId", - "parameters": { - "environmentId": "$request.path.environmentId", - "patternId": "$request.path.patternId" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" + "required": [ + "_embedded" + ] + } + ] }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Environment_Service_API_BearerAuth": [] - } - ] - }, - "put": { - "summary": "Updates a domain pattern for the specified environment.", - "operationId": "updateDomainPatternByEnvironmentIdAndPatternId", - "tags": [ - "Domain Patterns" - ], - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "environments:update-domain-pattern" - } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" - } - }, - "parameters": [ - { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." - }, - { - "name": "patternId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the domain pattern." - } - ], - "requestBody": { - "description": "Update domain pattern request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "pattern": { - "type": "string", - "maxLength": 455, - "pattern": "^(?=.*\\[site-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", - "description": "The updated domain pattern to apply to all associated sites in this environment, optionally followed by a single path segment. The [site-name] token is mandatory. Domain ≤ 200 chars excluding token placeholders; optional path max 255 chars matching ^/[A-Za-z0-9._-]+$. Additional semantic rules (no IPs, no forbidden suffixes, no wildcards, one pattern per environment) are enforced at the service layer.\n" - } - }, - "required": [ - "pattern" - ], - "additionalProperties": false, - "minProperties": 1 - }, - "examples": { - "update_domain_pattern": { - "summary": "Update a domain pattern", - "value": { - "pattern": "[site-name].staging.acme.com" - } - } - } - } - } - }, - "responses": { - "202": { - "description": "Domain pattern update initiated.", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ { "type": "object", "properties": { "_links": { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", "type": "object", - "description": "HAL link object", "properties": { "href": { "type": "string", @@ -68278,11 +68726,162 @@ "templated": true } ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" } }, - "required": [ - "self" - ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -68342,1062 +68941,188 @@ ] } }, - "_embedded": { + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] } }, "required": [ - "_links" + "count", + "total", + "pagination" ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } }, { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true } }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "The domain pattern update is being applied to all associated sites in this environment.", - "description": "Confirmation message that the domain pattern update is being applied." - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns/11111111-1111-1111-1111-111111111111" - } - }, - "message": "The domain pattern update is being applied to all associated sites in this environment." - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Environment_Service_API_BearerAuth": [] - } - ] - }, - "delete": { - "summary": "Deletes a domain pattern for the specified environment. Engineering role only.", - "operationId": "deleteDomainPatternByEnvironmentIdAndPatternId", - "tags": [ - "Domain Patterns" - ], - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "environments:delete-domain-pattern" - } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "environment-service" - } - }, - "parameters": [ - { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." - }, - { - "name": "patternId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the domain pattern." - } - ], - "responses": { - "202": { - "description": "Domain pattern deletion initiated. The 202 covers two async operations: (1) removal of the pattern record and (2) a bulk cleanup that disassociates any URLs already generated from this pattern on all associated site instances in the environment. Both operations complete before the final settled state is observable.\n", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "The domain pattern is being removed from all associated sites in this environment.", - "description": "Confirmation message that the domain pattern is being removed." - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns/11111111-1111-1111-1111-111111111111" - } - }, - "message": "The domain pattern is being removed from all associated sites in this environment." - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Environment_Service_API_BearerAuth": [] - } - ] - } - }, - "/tags": { - "servers": [ - { - "url": "https://cloud.acquia.com/api-framework/demo-php/api" - } - ], - "get": { - "summary": "Retrieves a collection of tags.", - "operationId": "getTags", - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "tags:list" - } - }, - "stability": "development", - "audience": [ - "public" - ] - }, - "x-acquia-operation": { - "provider": { - "service": "tag-service" - } - }, - "tags": [ - "Tags" - ], - "parameters": [ - { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "example": 20 - } - }, - { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "minimum": 1, - "example": 10 - } - }, - { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" - }, - "example": "status=active;type=standard" - }, - { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" - }, - "example": "name,-created_at" - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } } ] }, @@ -69575,768 +69300,79 @@ "_links": { "type": "object", "properties": { - "prev": { - "description": "Link to the previous page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + ] }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "next": { - "description": "Link to the next page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "offset": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for offset" - }, - "limit": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for limit" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { - "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" - } - }, - "required": [ - "total", - "limit", - "offset" - ] - } - }, - "required": [ - "count", - "total", - "pagination" - ] - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 - }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - } - ] - }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "filter": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] } ], "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" @@ -70835,25 +69871,68 @@ "allOf": [ { "type": "object", + "description": "CDN domain resource.", "properties": { - "name": { + "domain": { + "type": "string", + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]?(\\.[a-zA-Z]{2,})+$", + "description": "The fully qualified domain name." + }, + "subscription_uuid": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$", - "minLength": 1, - "maxLength": 255, - "description": "The name of the tag" + "description": "The unique identifier of the subscription the domain belongs to." }, - "color": { + "environment_id": { "type": "string", - "pattern": "^#((?:[a-f0-9]{3}){1,2})$", - "minLength": 4, - "maxLength": 7, - "description": "The color of the tag" + "pattern": "^[a-zA-Z0-9-]+$", + "description": "The environment identifier associated with the domain." + }, + "application_name": { + "type": "string", + "description": "The name of the application associated with the domain." + }, + "status": { + "type": "string", + "description": "The current status of the domain.", + "enum": [ + "connecting-to-edge", + "domain-validation-pending", + "ready-for-dns-repointing", + "configuration-failed", + "configured" + ] + }, + "ownership_validation_cname": { + "type": "string", + "description": "The CNAME record that must be created on the domain's DNS to validate ownership." + }, + "bandwidth_usage_tb": { + "type": "number", + "format": "float", + "description": "The bandwidth usage for the domain in terabytes." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the domain was created." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the domain was last updated." } }, "required": [ - "name", - "color" + "domain", + "subscription_uuid", + "environment_id", + "status", + "application_name", + "ownership_validation_cname", + "bandwidth_usage_tb", + "created_at", + "updated_at" ] }, { @@ -71010,60 +70089,71 @@ ] }, "examples": { - "tag_response": { - "summary": "Tag collection with pagination", + "domains_response": { + "summary": "Domain collection with pagination", "value": { "_links": { "self": { - "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags?limit=2&offset=2" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?limit=2&offset=0" }, "limit": { - "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags?offset=2{&limit}", + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?offset=0{&limit}", "templated": true }, "offset": { - "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags?limit=2{&offset}", + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?limit=2{&offset}", "templated": true }, "filter": { - "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags?limit=2&offset=2{&filter}", + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?limit=2&offset=0{&filter}", "templated": true }, "sort": { - "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags?limit=2&offset=2{&sort}", + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?limit=2&offset=0{&sort}", "templated": true }, - "prev": { - "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags?limit=2&offset=0" - }, "next": { - "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags?offset=4&limit=2" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?limit=2&offset=2" } }, "count": 2, - "total": 6, + "total": 50, "pagination": { - "total": 6, + "total": 50, "limit": 2, - "offset": 2 + "offset": 0 }, "_embedded": { "items": [ { - "name": "tag-1", - "color": "#ffffff", + "domain": "example.com", + "subscription_uuid": "12345678-1234-1234-1234-123456789012", + "environment_id": "0c3f0f5f-5727-4838-9459-2d90ee1cf7c1", + "application_name": "my-application", + "status": "configured", + "created_at": "2024-01-15T10:30:00Z", + "updated_at": "2024-01-20T15:45:00Z", + "ownership_validation_cname": "_acme-challenge.example.com", + "bandwidth_usage_tb": 1.25, "_links": { "self": { - "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags/tag-1" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains/example.com" } } }, { - "name": "tag-2", - "color": "#000000", + "domain": "test.example.org", + "subscription_uuid": "12345678-1234-1234-1234-123456789012", + "environment_id": "1d4f1f6f-6838-5949-a560-3e01ff2cf8d2", + "application_name": "test-application", + "status": "connecting-to-edge", + "created_at": "2024-01-18T08:15:00Z", + "ownership_validation_cname": "_acme-challenge.example.com", + "bandwidth_usage_tb": 1.25, + "updated_at": "2024-01-18T08:15:00Z", "_links": { "self": { - "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags/tag-2" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains/test.example.org" } } } @@ -71075,6 +70165,42 @@ } } }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, "401": { "description": "Unauthorized", "content": { @@ -71268,20 +70394,21 @@ }, "security": [ { - "Tag_API_BearerAuth": [] + "CDN_API_BearerAuth": [] } ] } }, - "/tags/{tagName}": { + "/subscriptions/{subscriptionUuid}/domains/{domainName}": { "servers": [ { - "url": "https://cloud.acquia.com/api-framework/demo-php/api" + "url": "https://api.acquia.com/v3" } ], "get": { - "summary": "Retrieves a tag by tag name.", - "operationId": "findTagByTagName", + "summary": "Retrieves a domain by domain name.", + "description": "Retrieves the full details of a CDN domain within a subscription, identified by its fully qualified domain name.", + "operationId": "findDomainBySubscriptionUuidAndDomainName", "x-acquia-exposure": { "channels": { "rest": { @@ -71289,7 +70416,7 @@ }, "cli": { "enabled": true, - "command": "tags:find" + "command": "subscriptions:find-domain" } }, "stability": "development", @@ -71299,22 +70426,32 @@ }, "x-acquia-operation": { "provider": { - "service": "tag-service" + "service": "cdn-service" } }, "tags": [ - "Tags" + "CDNs" ], "parameters": [ { - "name": "tagName", + "name": "subscriptionUuid", "in": "path", "required": true, + "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the tag." + } + }, + { + "name": "domainName", + "in": "path", + "required": true, + "description": "The fully qualified domain name.", + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]?(\\.[a-zA-Z]{2,})+$" + } } ], "responses": { @@ -71326,25 +70463,68 @@ "allOf": [ { "type": "object", + "description": "CDN domain resource.", "properties": { - "name": { + "domain": { + "type": "string", + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]?(\\.[a-zA-Z]{2,})+$", + "description": "The fully qualified domain name." + }, + "subscription_uuid": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$", - "minLength": 1, - "maxLength": 255, - "description": "The name of the tag" + "description": "The unique identifier of the subscription the domain belongs to." }, - "color": { + "environment_id": { "type": "string", - "pattern": "^#((?:[a-f0-9]{3}){1,2})$", - "minLength": 4, - "maxLength": 7, - "description": "The color of the tag" + "pattern": "^[a-zA-Z0-9-]+$", + "description": "The environment identifier associated with the domain." + }, + "application_name": { + "type": "string", + "description": "The name of the application associated with the domain." + }, + "status": { + "type": "string", + "description": "The current status of the domain.", + "enum": [ + "connecting-to-edge", + "domain-validation-pending", + "ready-for-dns-repointing", + "configuration-failed", + "configured" + ] + }, + "ownership_validation_cname": { + "type": "string", + "description": "The CNAME record that must be created on the domain's DNS to validate ownership." + }, + "bandwidth_usage_tb": { + "type": "number", + "format": "float", + "description": "The bandwidth usage for the domain in terabytes." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the domain was created." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the domain was last updated." } }, "required": [ - "name", - "color" + "domain", + "subscription_uuid", + "environment_id", + "status", + "application_name", + "ownership_validation_cname", + "bandwidth_usage_tb", + "created_at", + "updated_at" ] }, { @@ -71488,11 +70668,18 @@ ] }, "example": { - "name": "tag-1", - "color": "#ffffff", + "domain": "example.com", + "subscription_uuid": "12345678-1234-1234-1234-123456789012", + "environment_id": "0c3f0f5f-5727-4838-9459-2d90ee1cf7c1", + "application_name": "my-application", + "status": "configured", + "ownership_validation_cname": "_acme-challenge.example.com", + "bandwidth_usage_tb": 1.25, + "created_at": "2024-01-15T10:30:00Z", + "updated_at": "2024-01-20T15:45:00Z", "_links": { "self": { - "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags/tag-1" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains/example.com" } } } @@ -71500,9 +70687,10 @@ }, "links": { "self": { - "operationId": "findTagByTagName", + "operationId": "findDomainBySubscriptionUuidAndDomainName", "parameters": { - "tagName": "$request.path.tagName" + "subscriptionUuid": "$request.path.subscriptionUuid", + "domainName": "$request.path.domainName" } } } @@ -71700,13 +70888,19 @@ }, "security": [ { - "Tag_API_BearerAuth": [] + "CDN_API_BearerAuth": [] } ] - }, - "put": { - "summary": "Creates a tag if tag does not exist else updates the tag by tag name.", - "operationId": "saveTagByTagName", + } + }, + "/subscriptions/{subscriptionUuid}/domains/{domainName}/actions/provision": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "post": { + "operationId": "provisionDomainBySubscriptionUuidAndDomainName", "x-acquia-exposure": { "channels": { "rest": { @@ -71714,7 +70908,7 @@ }, "cli": { "enabled": true, - "command": "tags:update" + "command": "subscriptions:provision-domain" } }, "stability": "development", @@ -71724,55 +70918,74 @@ }, "x-acquia-operation": { "provider": { - "service": "tag-service" + "service": "cdn-service" } }, "tags": [ - "Tags" + "CDNs" ], + "summary": "Provisions a domain for CDN services", + "description": "Provisions a domain for CDN services within a subscription by associating it with an environment. For Cloudflare-backed subscriptions, callers may provide `edge_group` (`production` or `non-production`) to select the namespace group to provision into.", "parameters": [ { - "name": "tagName", + "name": "subscriptionUuid", "in": "path", "required": true, + "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the tag." + } + }, + { + "name": "domainName", + "in": "path", + "required": true, + "description": "The fully qualified domain name.", + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]?(\\.[a-zA-Z]{2,})+$" + } } ], "requestBody": { - "description": "Tag create/update request body", + "description": "Domain CDN provisioning request body", + "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { - "color": { + "environment_id": { "type": "string", - "pattern": "^#((?:[a-f0-9]{3}){1,2})$", - "description": "A color for the specified tag" + "pattern": "^[a-zA-Z0-9-]+$", + "description": "The environment identifier that the domain will be associated with for purging purposes." + }, + "edge_group": { + "type": "string", + "enum": [ + "production", + "non-production" + ], + "description": "The Edge Plus namespace group to provision the domain into for Cloudflare-backed subscriptions." } }, "additionalProperties": false, + "required": [ + "environment_id" + ], "minProperties": 1 }, - "examples": { - "save": { - "summary": "Saves a tag", - "description": "Saves a tag with specified color", - "value": { - "color": "#000000" - } - } + "example": { + "environment_id": "0c3f0f5f-5727-4838-9459-2d90ee1cf7c1", + "edge_group": "non-production" } } } }, "responses": { "202": { - "description": "Create/Updates a tag", + "description": "Accepted - Provisioning in progress", "content": { "application/hal+json": { "schema": { @@ -71936,8 +71149,8 @@ "properties": { "message": { "type": "string", - "const": "The tag has been saved.", - "description": "Confirmation message that the tag is saved" + "const": "The domain provisioning has been started.", + "description": "Confirmation message" } } } @@ -71946,10 +71159,10 @@ "example": { "_links": { "self": { - "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags/tag-3" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains/example.com" } }, - "message": "The tag has been saved." + "message": "The domain provisioning has been started." } } } @@ -72230,13 +71443,19 @@ }, "security": [ { - "Tag_API_BearerAuth": [] + "CDN_API_BearerAuth": [] } ] - }, - "delete": { - "summary": "Deletes a tag by tag name.", - "operationId": "deleteTagByTagName", + } + }, + "/subscriptions/{subscriptionUuid}/domains/{domainName}/actions/deprovision": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "post": { + "operationId": "deprovisionDomainBySubscriptionUuidAndDomainName", "x-acquia-exposure": { "channels": { "rest": { @@ -72244,7 +71463,7 @@ }, "cli": { "enabled": true, - "command": "tags:delete" + "command": "subscriptions:deprovision-domain" } }, "stability": "development", @@ -72254,27 +71473,39 @@ }, "x-acquia-operation": { "provider": { - "service": "tag-service" + "service": "cdn-service" } }, "tags": [ - "Tags" + "CDNs" ], + "summary": "Deprovisions a domain from CDN services", + "description": "Deprovisions a domain for CDN services within a subscription.", "parameters": [ { - "name": "tagName", + "name": "subscriptionUuid", "in": "path", "required": true, + "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the tag." + } + }, + { + "name": "domainName", + "in": "path", + "required": true, + "description": "The fully qualified domain name.", + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]?(\\.[a-zA-Z]{2,})+$" + } } ], "responses": { - "200": { - "description": "Deletes a tag", + "202": { + "description": "Accepted - Deprovisioning in progress", "content": { "application/hal+json": { "schema": { @@ -72438,8 +71669,8 @@ "properties": { "message": { "type": "string", - "const": "The tag has been deleted.", - "description": "Confirmation message that the tag is deleted" + "const": "The domain deprovisioning has been started.", + "description": "Confirmation message" } } } @@ -72448,10 +71679,10 @@ "example": { "_links": { "self": { - "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags/tag-1" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains/example.com" } }, - "message": "The tag has been deleted." + "message": "The domain deprovisioning has been started." } } } @@ -72696,55 +71927,639 @@ }, "security": [ { - "Tag_API_BearerAuth": [] + "CDN_API_BearerAuth": [] } ] } }, - "/codebases": { + "/environments/{environmentId}/actions/purge-cdn": { "servers": [ { "url": "https://api.acquia.com/v3" } ], - "get": { - "summary": "Retrieves a list of codebases accessible by the user.", - "description": "Retrieves a paginated collection of codebases. Use the `filter` parameter to scope results by association.\n\nFilter syntax:\n- By application: `filter=application_id%3D` (e.g. `filter=application_id%3Dabc-123`)\n", - "operationId": "getCodebases", + "post": { + "operationId": "purgeCdnByEnvironmentId", "x-acquia-exposure": { - "stability": "production", + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "environments:purge-cdn" + } + }, + "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 + ] + }, + "x-acquia-operation": { + "provider": { + "service": "cdn-service" + } + }, + "tags": [ + "CDNs" + ], + "summary": "Creates a CDN cache purge request", + "description": "Creates a request to purge cached content from the CDN for the specified environment.\n\n**Resource Types** (specified in the request body):\n- `urls` - Purge specific URLs\n- `tags` - Purge by cache tags\n- `domains` - Purge entire domains\n- `everything` - Purge all content in the environment\n", + "parameters": [ + { + "name": "environmentId", + "in": "path", + "required": true, + "description": "The unique identifier of the environment.", + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + } + } + ], + "requestBody": { + "description": "Purge request body", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "resource_type": { + "type": "string", + "description": "The type of resource to purge.", + "enum": [ + "tags", + "urls", + "domains", + "everything" + ] + }, + "values": { + "type": "array", + "description": "List of values to purge based on the resource type.\nRequired when `resource_type` is not `everything`.\n", + "items": { + "type": "string" + }, + "minItems": 1 + } + }, + "additionalProperties": false, + "required": [ + "resource_type" + ], + "minProperties": 1 + }, + "examples": { + "purge_urls": { + "summary": "Purge specific URLs", + "value": { + "resource_type": "urls", + "values": [ + "https://example.com/page1", + "https://example.com/page2" + ] + } + }, + "purge_tags": { + "summary": "Purge by cache tags", + "value": { + "resource_type": "tags", + "values": [ + "product-123", + "category-456" + ] + } + }, + "purge_domains": { + "summary": "Purge entire domains", + "value": { + "resource_type": "domains", + "values": [ + "example.com", + "test.example.org" + ] + } + }, + "purge_everything": { + "summary": "Purge everything", + "value": { + "resource_type": "everything" + } + } + } + } + } + }, + "responses": { + "202": { + "description": "Accepted - Purge request submitted", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "The purge request has been submitted.", + "description": "Confirmation message" + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/0c3f0f5f-5727-4838-9459-2d90ee1cf7c1/actions/purge-cdn" + } + }, + "message": "The purge request has been submitted." + } + } + } }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "CDN_API_BearerAuth": [] + } + ] + } + }, + "/subscriptions/{subscriptionUuid}/config/security/rulesets": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "operationId": "getSecurityRuleSetsBySubscriptionUuid", + "x-acquia-exposure": { "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "codebases:list" - }, - "mcp": { - "enabled": false - }, - "ops": { - "enabled": false + "command": "subscriptions:list-security-rule-sets" } - } + }, + "stability": "development", + "audience": [ + "public" + ] }, "x-acquia-operation": { "provider": { - "service": "codebase-service" + "service": "cdn-service" } }, "tags": [ - "Codebases" + "CDNs" ], + "summary": "Retrieves a collection of security rulesets.", + "description": "Retrieves security rulesets for a subscription.", "parameters": [ + { + "name": "subscriptionUuid", + "in": "path", + "required": true, + "description": "The unique identifier of the subscription.", + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + } + }, { "name": "offset", "in": "query", @@ -72766,17 +72581,6 @@ "minimum": 1, "example": 10 } - }, - { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" - }, - "example": "status=active;type=standard" } ], "responses": { @@ -73641,389 +73445,6 @@ } ] }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "filter": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" - } - } - }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" - } - } - } - ] - } - } - ] - }, { "type": "object", "properties": { @@ -74038,78 +73459,35 @@ "type": "object", "properties": { "id": { - "type": "string", - "description": "Unique identifier for the codebase" - }, - "label": { - "type": "string", - "description": "Human-readable label for the codebase" - }, - "region": { - "type": "string", - "description": "AWS region of the codebase" - }, - "vcs_url": { - "type": "string", - "format": "uri", - "description": "VCS repository URL" - }, - "repository_id": { - "type": "string", - "description": "VCS repository identifier" + "type": "integer", + "minimum": 1, + "description": "The unique identifier of the security ruleset." }, - "created_at": { + "name": { "type": "string", - "format": "date-time", - "description": "Creation timestamp" + "description": "The display name of the security ruleset." }, - "updated_at": { - "type": "string", - "format": "date-time", - "description": "Last update timestamp" + "is_enabled": { + "type": "boolean", + "description": "Indicates whether the security ruleset is enabled." }, "description": { "type": "string", - "description": "Description of the codebase" - }, - "flags": { - "type": "object", - "properties": { - "is_active": { - "type": "boolean", - "description": "Whether the codebase is active" - }, - "is_meo": { - "type": "boolean", - "description": "Whether the codebase is MEO" - } - }, - "required": [ - "is_active", - "is_meo" - ], - "description": "Feature flags for the codebase" + "description": "The description of the security ruleset." }, - "hash": { + "type": { "type": "string", - "description": "Codebase hash" - }, - "applications_total": { - "type": "integer", - "description": "Total number of applications linked to this codebase" + "description": "The type of the security ruleset.", + "enum": [ + "owasp", + "acquia-managed" + ] } }, "required": [ "id", - "label", - "region", - "vcs_url", - "repository_id", - "created_at", - "updated_at", - "flags", - "hash", - "applications_total" + "name", + "is_enabled" ] }, { @@ -74266,53 +73644,48 @@ ] }, "examples": { - "codebase_collection": { - "summary": "Codebase collection with pagination", + "security_rule_sets_response": { + "summary": "Security rulesets collection with pagination", "value": { "_links": { "self": { - "href": "https://api.acquia.com/v3/codebases?limit=10&offset=0" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets?limit=2&offset=0" }, "limit": { - "href": "https://api.acquia.com/v3/codebases?offset=0{&limit}", + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets?offset=0{&limit}", "templated": true }, "offset": { - "href": "https://api.acquia.com/v3/codebases?limit=10{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/codebases?limit=10&offset=0{&filter}", + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets?limit=2{&offset}", "templated": true } }, - "count": 1, - "total": 1, + "count": 2, + "total": 5, "pagination": { - "total": 1, - "limit": 10, + "total": 5, + "limit": 2, "offset": 0 }, "_embedded": { "items": [ { - "id": "a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4", - "label": "my-codebase", - "region": "us-east-1", - "vcs_url": "https://github.com/acquia/my-codebase.git", - "repository_id": "12345678", - "created_at": "2024-01-15T10:30:00Z", - "updated_at": "2024-01-15T10:30:00Z", - "description": "Main production codebase", - "flags": { - "is_active": true, - "is_meo": false - }, - "hash": "abc123def456", - "applications_total": 3, + "id": 123, + "name": "OWASP Core Ruleset", + "is_enabled": true, "_links": { "self": { - "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets/123" + } + } + }, + { + "id": 456, + "name": "Bot Protection", + "is_enabled": false, + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets/456" } } } @@ -74454,6 +73827,53 @@ } } }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, "500": { "description": "Internal Server Error", "content": { @@ -74506,63 +73926,64 @@ }, "security": [ { - "Codebase_Service_API_BearerAuth": [] + "CDN_API_BearerAuth": [] } ] } }, - "/codebases/{codebaseId}": { + "/subscriptions/{subscriptionUuid}/config/security/rulesets/{ruleSetId}": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "summary": "Retrieves a codebase by its ID.", - "operationId": "findCodebaseByCodebaseId", + "operationId": "findSecurityRuleSetBySubscriptionUuidAndRuleSetId", "x-acquia-exposure": { - "stability": "production", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "codebases:find" - }, - "mcp": { - "enabled": false - }, - "ops": { - "enabled": false + "command": "subscriptions:find-security-rule-set" } - } + }, + "stability": "development", + "audience": [ + "public" + ] }, "x-acquia-operation": { "provider": { - "service": "codebase-service" + "service": "cdn-service" } }, "tags": [ - "Codebases" + "CDNs" ], + "summary": "Retrieves a security ruleset.", + "description": "Retrieves a security ruleset for a subscription.", "parameters": [ { - "name": "codebaseId", + "name": "subscriptionUuid", "in": "path", "required": true, + "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the codebase." + } + }, + { + "name": "ruleSetId", + "in": "path", + "required": true, + "description": "The unique identifier of the security rule set.", + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + } } ], "responses": { @@ -74576,78 +73997,35 @@ "type": "object", "properties": { "id": { - "type": "string", - "description": "Unique identifier for the codebase" - }, - "label": { - "type": "string", - "description": "Human-readable label for the codebase" - }, - "region": { - "type": "string", - "description": "AWS region of the codebase" - }, - "vcs_url": { - "type": "string", - "format": "uri", - "description": "VCS repository URL" - }, - "repository_id": { - "type": "string", - "description": "VCS repository identifier" + "type": "integer", + "minimum": 1, + "description": "The unique identifier of the security ruleset." }, - "created_at": { + "name": { "type": "string", - "format": "date-time", - "description": "Creation timestamp" + "description": "The display name of the security ruleset." }, - "updated_at": { - "type": "string", - "format": "date-time", - "description": "Last update timestamp" + "is_enabled": { + "type": "boolean", + "description": "Indicates whether the security ruleset is enabled." }, "description": { "type": "string", - "description": "Description of the codebase" - }, - "flags": { - "type": "object", - "properties": { - "is_active": { - "type": "boolean", - "description": "Whether the codebase is active" - }, - "is_meo": { - "type": "boolean", - "description": "Whether the codebase is MEO" - } - }, - "required": [ - "is_active", - "is_meo" - ], - "description": "Feature flags for the codebase" + "description": "The description of the security ruleset." }, - "hash": { + "type": { "type": "string", - "description": "Codebase hash" - }, - "applications_total": { - "type": "integer", - "description": "Total number of applications linked to this codebase" + "description": "The type of the security ruleset.", + "enum": [ + "owasp", + "acquia-managed" + ] } }, "required": [ "id", - "label", - "region", - "vcs_url", - "repository_id", - "created_at", - "updated_at", - "flags", - "hash", - "applications_total" + "name", + "is_enabled" ] }, { @@ -74791,27 +74169,27 @@ ] }, "example": { - "id": "a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4", - "label": "my-codebase", - "region": "us-east-1", - "vcs_url": "https://github.com/acquia/my-codebase.git", - "repository_id": "12345678", - "created_at": "2024-01-15T10:30:00Z", - "updated_at": "2024-01-15T10:30:00Z", - "description": "Main production codebase", - "flags": { - "is_active": true, - "is_meo": false - }, - "hash": "abc123def456", - "applications_total": 3, + "id": 1, + "name": "OWASP Top 10", + "is_enabled": true, + "description": "OWASP Top 10 security ruleset", + "type": "owasp", "_links": { "self": { - "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets/1" } } } } + }, + "links": { + "self": { + "operationId": "findSecurityRuleSetBySubscriptionUuidAndRuleSetId", + "parameters": { + "subscriptionUuid": "$request.path.subscriptionUuid", + "ruleSetId": "$request.path.ruleSetId" + } + } } }, "401": { @@ -75007,84 +74385,83 @@ }, "security": [ { - "Codebase_Service_API_BearerAuth": [] + "CDN_API_BearerAuth": [] } ] }, "put": { - "summary": "Updates a codebase by its ID.", - "operationId": "updateCodebaseByCodebaseId", + "operationId": "updateSecurityRuleSetBySubscriptionUuidAndRuleSetId", "x-acquia-exposure": { - "stability": "production", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "codebases:update" - }, - "mcp": { - "enabled": false - }, - "ops": { - "enabled": false + "command": "subscriptions:update-security-rule-set" } - } + }, + "stability": "development", + "audience": [ + "public" + ] }, "x-acquia-operation": { "provider": { - "service": "codebase-service" + "service": "cdn-service" } }, "tags": [ - "Codebases" + "CDNs" ], + "summary": "Updates a security rulesets.", + "description": "Updates a security rulesets for a subscription.", "parameters": [ { - "name": "codebaseId", + "name": "subscriptionUuid", + "in": "path", + "required": true, + "description": "The unique identifier of the subscription.", + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + } + }, + { + "name": "ruleSetId", "in": "path", "required": true, + "description": "The unique identifier of the security rule set.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the codebase." + } } ], "requestBody": { - "description": "Codebase update request body", + "description": "Security ruleset update request body", + "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { - "label": { - "type": "string", - "description": "Human-readable label for the codebase" - }, - "description": { - "type": "string", - "description": "Description of the codebase" + "is_enabled": { + "type": "boolean", + "description": "Indicates whether the security ruleset should be enabled." } }, - "minProperties": 1, - "additionalProperties": false + "additionalProperties": false, + "required": [ + "is_enabled" + ], + "minProperties": 1 }, "examples": { - "update": { - "summary": "Update a codebase", - "description": "Updates an existing codebase's label and description", + "enable": { + "summary": "Enables a security ruleset", "value": { - "label": "updated-codebase-label", - "description": "Updated codebase description" + "is_enabled": true } } } @@ -75093,7 +74470,7 @@ }, "responses": { "200": { - "description": "Codebase updated", + "description": "OK", "content": { "application/hal+json": { "schema": { @@ -75257,7 +74634,7 @@ "properties": { "message": { "type": "string", - "const": "Codebase updated.", + "const": "The security ruleset has been updated.", "description": "Confirmation message" } } @@ -75267,10 +74644,10 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets/123" } }, - "message": "Codebase updated." + "message": "The security ruleset has been updated." } } } @@ -75551,61 +74928,103 @@ }, "security": [ { - "Codebase_Service_API_BearerAuth": [] + "CDN_API_BearerAuth": [] } ] - }, - "delete": { - "summary": "Deletes a codebase by its ID.", - "operationId": "deleteCodebaseByCodebaseId", + } + }, + "/subscriptions/{subscriptionUuid}/config/security/ip-rules": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "operationId": "getIpRulesBySubscriptionUuid", "x-acquia-exposure": { - "stability": "production", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "codebases:delete" - }, - "mcp": { - "enabled": false - }, - "ops": { - "enabled": false + "command": "subscriptions:list-ip-rules" } - } + }, + "stability": "development", + "audience": [ + "public" + ] }, "x-acquia-operation": { "provider": { - "service": "codebase-service" + "service": "cdn-service" } }, "tags": [ - "Codebases" + "CDNs" ], + "summary": "Retrieves a collection of IP rules.", + "description": "Retrieves IP rules for a subscription.", "parameters": [ { - "name": "codebaseId", + "name": "subscriptionUuid", "in": "path", "required": true, + "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" + } + }, + { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" }, - "description": "Unique identifier for the codebase." + "example": "status=active;type=standard" + }, + { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" + }, + { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } } ], "responses": { "200": { - "description": "Codebase deleted", + "description": "OK", "content": { "application/hal+json": { "schema": { @@ -75753,530 +75172,25 @@ { "type": "object", "properties": { - "message": { - "type": "string", - "description": "The message content" + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] } }, "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Codebase deleted.", - "description": "Confirmation message" - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4" - } - }, - "message": "Codebase deleted." - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Codebase_Service_API_BearerAuth": [] - } - ] - } - }, - "/codebases/{codebaseId}/references": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "get": { - "summary": "Retrieves a list of git references for a codebase.", - "operationId": "getReferencesByCodebaseId", - "x-acquia-exposure": { - "stability": "production", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - }, - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "codebases:list-references" - }, - "mcp": { - "enabled": false - }, - "ops": { - "enabled": false - } - } - }, - "x-acquia-operation": { - "provider": { - "service": "codebase-service" - } - }, - "tags": [ - "Codebase References" - ], - "parameters": [ - { - "name": "codebaseId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the codebase." - }, - { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "example": 20 - } - }, - { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "minimum": 1, - "example": 10 - } - } - ], - "responses": { - "200": { - "description": "A list of git references for the codebase", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" + "_embedded" ] } ] @@ -76971,1176 +75885,385 @@ ] }, { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "allOf": [ - { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { "type": "object", + "description": "HAL link object", "properties": { - "id": { + "href": { "type": "string", - "description": "Unique identifier for the reference" + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" }, "name": { "type": "string", - "description": "Name of the git reference" + "description": "A secondary key for selecting links" }, - "type": { + "profile": { "type": "string", - "enum": [ - "branch", - "tag" - ], - "description": "Type of the git reference" + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "id", - "name", - "type" + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true ] } }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" } - }, - "required": [ - "_links" - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } ] } } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4/references?limit=10&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4/references?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4/references?limit=10{&offset}", - "templated": true - } - }, - "count": 2, - "total": 2, - "pagination": { - "total": 2, - "limit": 10, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "ref-123", - "name": "main", - "type": "branch", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4/references/main" } } - }, - { - "id": "ref-456", - "name": "v1.0.0", - "type": "tag", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4/references/v1.0.0" + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] } - } - } - ] - } - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Codebase_Service_API_BearerAuth": [] - } - ] - } - }, - "/codebases/{codebaseId}/references/{referenceName}": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "get": { - "summary": "Retrieves a single git reference for a codebase.", - "operationId": "findReferenceByCodebaseIdAndReferenceName", - "x-acquia-exposure": { - "stability": "production", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - }, - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "codebases:find-reference" - }, - "mcp": { - "enabled": false - }, - "ops": { - "enabled": false - } - } - }, - "x-acquia-operation": { - "provider": { - "service": "codebase-service" - } - }, - "tags": [ - "Codebase References" - ], - "parameters": [ - { - "name": "codebaseId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the codebase." - }, - { - "name": "referenceName", - "in": "path", - "required": true, - "description": "Name of the git reference (branch or tag). Slashes must be URL-encoded as `%2F` in the path (e.g., `feature%2Fbranch-name`).", - "schema": { - "type": "string", - "pattern": "^[^/]+$" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Unique identifier for the reference" - }, - "name": { - "type": "string", - "description": "Name of the git reference" - }, - "type": { - "type": "string", - "enum": [ - "branch", - "tag" - ], - "description": "Type of the git reference" - } - }, - "required": [ - "id", - "name", - "type" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - }, - "example": { - "id": "ref-123", - "name": "main", - "type": "branch", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4/references/main" - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Codebase_Service_API_BearerAuth": [] - } - ] - } - }, - "/codebases/{codebaseId}/domain-patterns": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "get": { - "summary": "Retrieves a collection of domain patterns for the specified codebase.", - "operationId": "getDomainPatternsByCodebaseId", - "tags": [ - "Domain Patterns" - ], - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "codebases:list-domain-patterns" - } - }, - "stability": "development", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } - }, - "x-acquia-operation": { - "provider": { - "service": "codebase-service" - } - }, - "parameters": [ - { - "name": "codebaseId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the codebase." - }, - { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "example": 20 - } - }, - { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "minimum": 1, - "example": 10 - } - }, - { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" - }, - "example": "name,-created_at" - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } } ] }, @@ -78318,696 +76441,7 @@ "_links": { "type": "object", "properties": { - "prev": { - "description": "Link to the previous page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "next": { - "description": "Link to the next page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "offset": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for offset" - }, - "limit": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for limit" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { - "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" - } - }, - "required": [ - "total", - "limit", - "offset" - ] - } - }, - "required": [ - "count", - "total", - "pagination" - ] - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 - }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - } - ] - }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "sort": { + "sort": { "allOf": [ { "type": "object", @@ -79197,21 +76631,52 @@ "type": "object", "properties": { "id": { + "type": "integer", + "minimum": 1, + "description": "The unique identifier of the IP rule." + }, + "display_name": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the domain pattern." + "description": "The display name of the IP rule." }, - "pattern": { + "action": { "type": "string", - "maxLength": 455, - "pattern": "^(?=.*\\[site-name\\])(?=.*\\[environment-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", - "description": "The domain pattern string, optionally followed by a single path segment (e.g. [site-name].[environment-name].acme.com/app). Both [site-name] and [environment-name] tokens are mandatory at codebase level. Domain rules (enforced in service layer): ≤ 200 chars excluding token placeholders, at least 2 components (must contain .), no IP addresses, no forbidden suffixes (acquia-sites.com, hosting.acquia.com), no wildcards, no leading/trailing dot or hyphen, no consecutive dots, no query string or fragment. Path rules: optional, max 255 chars, must match ^/[A-Za-z0-9._-]+$, max 1 segment. DNS label limit: 63 chars after token substitution ([site-name] ≤ 14 chars, [environment-name] ≤ 10 chars). One pattern per codebase.\n", - "example": "[site-name].[environment-name].acme.com" + "enum": [ + "block", + "allow" + ], + "description": "The action applied when the rule matches." + }, + "description": { + "type": "string", + "description": "The description of the IP rule." + }, + "ips": { + "type": "array", + "description": "The IPs or CIDR blocks associated with the rule.", + "items": { + "type": "string", + "description": "An IP address or CIDR block." + } + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the rule was created." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the rule was last updated." } }, "required": [ "id", - "pattern" + "display_name", + "action", + "ips", + "created_at", + "updated_at" ] }, { @@ -79368,79 +76833,78 @@ ] }, "examples": { - "domain_pattern_collection": { - "summary": "Domain pattern collection", + "ip_rules_response": { + "summary": "IP rules collection with pagination", "value": { "_links": { "self": { - "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?limit=2&offset=0" }, "limit": { - "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns?offset=0{&limit}", + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?offset=0{&limit}", "templated": true }, "offset": { - "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns?limit=25{&offset}", + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?limit=2{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?limit=2&offset=0{&filter}", "templated": true }, "sort": { - "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns?limit=25&offset=0{&sort}", + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?limit=2&offset=0{&sort}", "templated": true + }, + "next": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?offset=2&limit=2" } }, - "count": 1, - "total": 1, + "count": 2, + "total": 5, "pagination": { - "total": 1, - "limit": 25, + "total": 5, + "limit": 2, "offset": 0 }, "_embedded": { "items": [ { - "id": "22222222-2222-2222-2222-222222222222", - "pattern": "[site-name].[environment-name].acme.com", + "id": 101, + "display_name": "Block office IPs", + "action": "block", + "description": "Blocks office IP ranges.", + "ips": [ + "192.0.2.10", + "198.51.100.0/24" + ], + "created_at": "2026-05-01T12:00:00Z", + "updated_at": "2026-05-10T09:30:00Z", "_links": { "self": { - "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns/22222222-2222-2222-2222-222222222222" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/101" + } + } + }, + { + "id": 102, + "display_name": "Allow support", + "action": "allow", + "description": "Allows support traffic.", + "ips": [ + "203.0.113.5" + ], + "created_at": "2026-05-02T08:15:00Z", + "updated_at": "2026-05-11T13:45:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/102" } } } ] } } - }, - "domain_pattern_collection_empty": { - "summary": "Empty domain pattern collection", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns" - }, - "limit": { - "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns?limit=25{&offset}", - "templated": true - }, - "sort": { - "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns?limit=25&offset=0{&sort}", - "templated": true - } - }, - "count": 0, - "total": 0, - "pagination": { - "total": 0, - "limit": 25, - "offset": 0 - }, - "_embedded": { - "items": [] - } - } } } } @@ -79675,16 +77139,12 @@ }, "security": [ { - "Codebase_Service_API_BearerAuth": [] + "CDN_API_BearerAuth": [] } ] }, "post": { - "summary": "Creates a domain pattern for the specified codebase.", - "operationId": "createDomainPatternByCodebaseId", - "tags": [ - "Domain Patterns" - ], + "operationId": "createIpRuleBySubscriptionUuid", "x-acquia-exposure": { "channels": { "rest": { @@ -79692,59 +77152,87 @@ }, "cli": { "enabled": true, - "command": "codebases:create-domain-pattern" + "command": "subscriptions:create-ip-rule" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "codebase-service" + "service": "cdn-service" } }, + "tags": [ + "CDNs" + ], + "summary": "Creates an IP rule.", + "description": "Creates an IP rule for a subscription.", "parameters": [ { - "name": "codebaseId", + "name": "subscriptionUuid", "in": "path", "required": true, + "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the codebase." + } } ], "requestBody": { - "description": "Create domain pattern request body", + "description": "IP rule create request body", + "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { - "pattern": { + "ips": { + "type": "array", + "description": "The IPs or CIDR blocks to include in the rule.", + "items": { + "type": "string", + "description": "An IP address or CIDR block." + } + }, + "action": { "type": "string", - "maxLength": 455, - "pattern": "^(?=.*\\[site-name\\])(?=.*\\[environment-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", - "description": "The domain pattern to apply to all associated sites in this codebase, optionally followed by a single path segment. Both [site-name] and [environment-name] tokens are mandatory. Domain ≤ 200 chars excluding token placeholders; optional path max 255 chars matching ^/[A-Za-z0-9._-]+$. Additional semantic rules (no IPs, no forbidden suffixes, no wildcards, one pattern per codebase) are enforced at the service layer.\n" + "enum": [ + "block", + "allow" + ], + "description": "The action applied when the rule matches." + }, + "display_name": { + "type": "string", + "description": "The display name of the IP rule." + }, + "description": { + "type": "string", + "description": "The description of the IP rule." } }, + "additionalProperties": false, "required": [ - "pattern" - ], - "additionalProperties": false + "ips", + "action", + "display_name" + ] }, "examples": { - "create_domain_pattern": { - "summary": "Create a domain pattern", + "create": { + "summary": "Creates an IP rule", "value": { - "pattern": "[site-name].[environment-name].acme.com" + "ips": [ + "192.0.2.10", + "198.51.100.0/24" + ], + "action": "block", + "display_name": "Block office IPs", + "description": "Blocks office IP ranges." } } } @@ -79752,8 +77240,8 @@ } }, "responses": { - "202": { - "description": "Domain pattern creation initiated.", + "200": { + "description": "OK", "content": { "application/hal+json": { "schema": { @@ -79917,8 +77405,8 @@ "properties": { "message": { "type": "string", - "const": "Created custom domain pattern. Unique domains are being created for each site.", - "description": "Confirmation message that the domain pattern is being applied." + "const": "The IP rule has been created.", + "description": "Confirmation message" } } } @@ -79927,10 +77415,10 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns/22222222-2222-2222-2222-222222222222" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/101" } }, - "message": "Created custom domain pattern. Unique domains are being created for each site." + "message": "The IP rule has been created." } } } @@ -80211,23 +77699,19 @@ }, "security": [ { - "Codebase_Service_API_BearerAuth": [] + "CDN_API_BearerAuth": [] } ] } }, - "/codebases/{codebaseId}/domain-patterns/{patternId}": { + "/subscriptions/{subscriptionUuid}/config/security/ip-rules/{ipRuleId}": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "summary": "Retrieves a domain pattern by codebase ID and pattern ID.", - "operationId": "findDomainPatternByCodebaseIdAndPatternId", - "tags": [ - "Domain Patterns" - ], + "operationId": "findIpRuleBySubscriptionUuidAndIpRuleId", "x-acquia-exposure": { "channels": { "rest": { @@ -80235,43 +77719,44 @@ }, "cli": { "enabled": true, - "command": "codebases:find-domain-pattern" + "command": "subscriptions:find-ip-rule" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "codebase-service" + "service": "cdn-service" } }, + "tags": [ + "CDNs" + ], + "summary": "Retrieves an IP rule.", + "description": "Retrieves an IP rule for a subscription.", "parameters": [ { - "name": "codebaseId", + "name": "subscriptionUuid", "in": "path", "required": true, + "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the codebase." + } }, { - "name": "patternId", + "name": "ipRuleId", "in": "path", "required": true, + "description": "The unique identifier of the IP rule.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the domain pattern." + } } ], "responses": { @@ -80285,21 +77770,52 @@ "type": "object", "properties": { "id": { + "type": "integer", + "minimum": 1, + "description": "The unique identifier of the IP rule." + }, + "display_name": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the domain pattern." + "description": "The display name of the IP rule." }, - "pattern": { + "action": { "type": "string", - "maxLength": 455, - "pattern": "^(?=.*\\[site-name\\])(?=.*\\[environment-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", - "description": "The domain pattern string, optionally followed by a single path segment (e.g. [site-name].[environment-name].acme.com/app). Both [site-name] and [environment-name] tokens are mandatory at codebase level. Domain rules (enforced in service layer): ≤ 200 chars excluding token placeholders, at least 2 components (must contain .), no IP addresses, no forbidden suffixes (acquia-sites.com, hosting.acquia.com), no wildcards, no leading/trailing dot or hyphen, no consecutive dots, no query string or fragment. Path rules: optional, max 255 chars, must match ^/[A-Za-z0-9._-]+$, max 1 segment. DNS label limit: 63 chars after token substitution ([site-name] ≤ 14 chars, [environment-name] ≤ 10 chars). One pattern per codebase.\n", - "example": "[site-name].[environment-name].acme.com" + "enum": [ + "block", + "allow" + ], + "description": "The action applied when the rule matches." + }, + "description": { + "type": "string", + "description": "The description of the IP rule." + }, + "ips": { + "type": "array", + "description": "The IPs or CIDR blocks associated with the rule.", + "items": { + "type": "string", + "description": "An IP address or CIDR block." + } + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the rule was created." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the rule was last updated." } }, "required": [ "id", - "pattern" + "display_name", + "action", + "ips", + "created_at", + "updated_at" ] }, { @@ -80443,11 +77959,18 @@ ] }, "example": { - "id": "22222222-2222-2222-2222-222222222222", - "pattern": "[site-name].[environment-name].acme.com", + "id": 101, + "display_name": "Block office VPN", + "action": "allow", + "description": "Allow traffic from the office VPN", + "ips": [ + "203.0.113.0/24" + ], + "created_at": "2026-05-01T12:00:00Z", + "updated_at": "2026-05-10T09:30:00Z", "_links": { "self": { - "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns/22222222-2222-2222-2222-222222222222" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/101" } } } @@ -80455,10 +77978,10 @@ }, "links": { "self": { - "operationId": "findDomainPatternByCodebaseIdAndPatternId", + "operationId": "findIpRuleBySubscriptionUuidAndIpRuleId", "parameters": { - "codebaseId": "$request.path.codebaseId", - "patternId": "$request.path.patternId" + "subscriptionUuid": "$request.path.subscriptionUuid", + "ipRuleId": "$request.path.ipRuleId" } } } @@ -80656,16 +78179,12 @@ }, "security": [ { - "Codebase_Service_API_BearerAuth": [] + "CDN_API_BearerAuth": [] } ] }, "put": { - "summary": "Updates a domain pattern for the specified codebase.", - "operationId": "updateDomainPatternByCodebaseIdAndPatternId", - "tags": [ - "Domain Patterns" - ], + "operationId": "updateIpRuleBySubscriptionUuidAndIpRuleId", "x-acquia-exposure": { "channels": { "rest": { @@ -80673,70 +78192,91 @@ }, "cli": { "enabled": true, - "command": "codebases:update-domain-pattern" + "command": "subscriptions:update-ip-rule" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "codebase-service" + "service": "cdn-service" } }, + "tags": [ + "CDNs" + ], + "summary": "Updates an IP rule.", + "description": "Updates an IP rule for a subscription.", "parameters": [ { - "name": "codebaseId", + "name": "subscriptionUuid", "in": "path", "required": true, + "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the codebase." + } }, { - "name": "patternId", + "name": "ipRuleId", "in": "path", "required": true, + "description": "The unique identifier of the IP rule.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the domain pattern." + } } ], "requestBody": { - "description": "Update domain pattern request body", + "description": "IP rule update request body", + "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { - "pattern": { + "display_name": { "type": "string", - "maxLength": 455, - "pattern": "^(?=.*\\[site-name\\])(?=.*\\[environment-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", - "description": "The updated domain pattern to apply to all associated sites in this codebase, optionally followed by a single path segment. Both [site-name] and [environment-name] tokens are mandatory. Domain ≤ 200 chars excluding token placeholders; optional path max 255 chars matching ^/[A-Za-z0-9._-]+$. Additional semantic rules (no IPs, no forbidden suffixes, no wildcards, one pattern per codebase) are enforced at the service layer.\n" + "description": "The display name of the IP rule." + }, + "action": { + "type": "string", + "enum": [ + "block", + "allow" + ], + "description": "The action applied when the rule matches." + }, + "description": { + "type": "string", + "description": "The description of the IP rule." + }, + "ips": { + "type": "array", + "description": "The IPs or CIDR blocks associated with the rule.", + "items": { + "type": "string", + "description": "An IP address or CIDR block." + } } }, - "required": [ - "pattern" - ], "additionalProperties": false, "minProperties": 1 }, "examples": { - "update_domain_pattern": { - "summary": "Update a domain pattern", + "update": { + "summary": "Updates an IP rule", "value": { - "pattern": "[site-name].[environment-name].acme.com" + "display_name": "Allow support", + "action": "allow", + "ips": [ + "203.0.113.5" + ] } } } @@ -80744,8 +78284,8 @@ } }, "responses": { - "202": { - "description": "Domain pattern update initiated.", + "200": { + "description": "OK", "content": { "application/hal+json": { "schema": { @@ -80909,8 +78449,8 @@ "properties": { "message": { "type": "string", - "const": "Saved custom domain pattern. Updating existing generated domains.", - "description": "Confirmation message that the domain pattern update is being applied." + "const": "The IP rule has been updated.", + "description": "Confirmation message" } } } @@ -80919,10 +78459,10 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns/22222222-2222-2222-2222-222222222222" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/101" } }, - "message": "Saved custom domain pattern. Updating existing generated domains." + "message": "The IP rule has been updated." } } } @@ -81203,16 +78743,12 @@ }, "security": [ { - "Codebase_Service_API_BearerAuth": [] + "CDN_API_BearerAuth": [] } ] }, "delete": { - "summary": "Deletes a domain pattern for the specified codebase. Engineering role only.", - "operationId": "deleteDomainPatternByCodebaseIdAndPatternId", - "tags": [ - "Domain Patterns" - ], + "operationId": "deleteIpRuleBySubscriptionUuidAndIpRuleId", "x-acquia-exposure": { "channels": { "rest": { @@ -81220,48 +78756,49 @@ }, "cli": { "enabled": true, - "command": "codebases:delete-domain-pattern" + "command": "subscriptions:delete-ip-rule" } }, "stability": "development", "audience": [ "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - } + ] }, "x-acquia-operation": { "provider": { - "service": "codebase-service" + "service": "cdn-service" } }, + "tags": [ + "CDNs" + ], + "summary": "Deletes an IP rule.", + "description": "Deletes an IP rule for a subscription.", "parameters": [ { - "name": "codebaseId", + "name": "subscriptionUuid", "in": "path", "required": true, + "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the codebase." + } }, { - "name": "patternId", + "name": "ipRuleId", "in": "path", "required": true, + "description": "The unique identifier of the IP rule.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the domain pattern." + } } ], "responses": { - "202": { - "description": "Domain pattern deletion initiated. The 202 covers two async operations: (1) removal of the pattern record and (2) a bulk cleanup that disassociates any URLs already generated from this pattern on all associated site instances in the codebase. Both operations complete before the final settled state is observable.\n", + "200": { + "description": "OK", "content": { "application/hal+json": { "schema": { @@ -81425,8 +78962,8 @@ "properties": { "message": { "type": "string", - "const": "The domain pattern is being removed from all associated sites in this codebase.", - "description": "Confirmation message that the domain pattern is being removed." + "const": "The IP rule has been deleted.", + "description": "Confirmation message" } } } @@ -81435,10 +78972,10 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns/22222222-2222-2222-2222-222222222222" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/101" } }, - "message": "The domain pattern is being removed from all associated sites in this codebase." + "message": "The IP rule has been deleted." } } } @@ -81683,63 +79220,54 @@ }, "security": [ { - "Codebase_Service_API_BearerAuth": [] + "CDN_API_BearerAuth": [] } ] } }, - "/subscriptions/{subscriptionId}/codebases": { + "/subscriptions/{subscriptionUuid}/config/security/custom-rules": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "summary": "Retrieves a list of codebases for a subscription.", - "operationId": "getCodebasesBySubscriptionId", + "operationId": "getCustomRulesBySubscriptionUuid", "x-acquia-exposure": { - "stability": "production", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "subscriptions:list-codebases" - }, - "mcp": { - "enabled": false - }, - "ops": { - "enabled": false + "command": "subscriptions:list-custom-rules" } - } + }, + "stability": "development", + "audience": [ + "public" + ] }, "x-acquia-operation": { "provider": { - "service": "codebase-service" + "service": "cdn-service" } }, "tags": [ - "Codebases" + "CDNs" ], + "summary": "Retrieves a collection of custom security rules.", + "description": "Retrieves custom security rules for a subscription.", "parameters": [ { - "name": "subscriptionId", + "name": "subscriptionUuid", "in": "path", "required": true, + "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the subscription" + } }, { "name": "offset", @@ -81762,22 +79290,11 @@ "minimum": 1, "example": 10 } - }, - { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" - }, - "example": "status=active;type=standard" } ], "responses": { "200": { - "description": "A list of codebases for the subscription", + "description": "OK", "content": { "application/hal+json": { "schema": { @@ -82637,389 +80154,6 @@ } ] }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "filter": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" - } - } - }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" - } - } - } - ] - } - } - ] - }, { "type": "object", "properties": { @@ -83034,78 +80168,234 @@ "type": "object", "properties": { "id": { - "type": "string", - "description": "Unique identifier for the codebase" + "type": "integer", + "minimum": 1, + "description": "The unique identifier of the custom security rule." }, - "label": { + "display_name": { "type": "string", - "description": "Human-readable label for the codebase" + "description": "The display name of the custom security rule." }, - "region": { + "action": { "type": "string", - "description": "AWS region of the codebase" + "enum": [ + "block", + "allow", + "alert" + ], + "description": "The action applied when the rule matches." }, - "vcs_url": { - "type": "string", - "format": "uri", - "description": "VCS repository URL" + "priority": { + "type": "integer", + "minimum": 1, + "description": "The priority order for the rule. Lower values are evaluated first.\nPriorities must be unique within a subscription — creating or\nupdating a rule with a priority already in use replaces the\nexisting rule at that priority.\n" }, - "repository_id": { - "type": "string", - "description": "VCS repository identifier" + "domains": { + "type": "array", + "description": "The domains the rule applies to.", + "items": { + "type": "string", + "description": "A domain name." + } + }, + "paths": { + "type": "array", + "description": "The paths the rule applies to.", + "items": { + "type": "string", + "description": "A path pattern." + } + }, + "mapped_domains_count": { + "type": "integer", + "description": "The number of domains the rule is mapped to." + }, + "targets": { + "type": "array", + "description": "Conditions that must match for the rule to fire.", + "items": { + "oneOf": [ + { + "description": "Range match for IP or ASN ranges.", + "type": "object", + "required": [ + "attribute", + "criteria", + "value" + ], + "additionalProperties": false, + "properties": { + "attribute": { + "type": "string", + "description": "The request attribute the rule inspects.", + "enum": [ + "source-ip", + "asn" + ] + }, + "criteria": { + "type": "string", + "description": "How `value` is compared against `attribute`.", + "enum": [ + "range" + ] + }, + "value": { + "type": "object", + "description": "Range bounds for IP or ASN ranges.", + "additionalProperties": false, + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "type": "string", + "description": "The start of the range." + }, + "to": { + "type": "string", + "description": "The end of the range." + } + } + } + } + }, + { + "description": "Value-list match for non-header, non-query attributes.", + "type": "object", + "required": [ + "attribute", + "criteria", + "value" + ], + "additionalProperties": false, + "properties": { + "attribute": { + "type": "string", + "description": "The request attribute the rule inspects.", + "enum": [ + "source-ip", + "country", + "method", + "path", + "asn" + ] + }, + "criteria": { + "type": "string", + "description": "How `value` is compared against `attribute`.", + "enum": [ + "equals", + "contains", + "regex" + ] + }, + "value": { + "type": "object", + "description": "A list of candidate values combined with OR.", + "additionalProperties": false, + "required": [ + "values" + ], + "properties": { + "values": { + "type": "array", + "description": "The list of values.", + "items": { + "type": "string", + "description": "A value." + } + } + } + } + } + }, + { + "description": "Key-value match for header or query-string attributes.", + "type": "object", + "required": [ + "attribute", + "criteria", + "value" + ], + "additionalProperties": false, + "properties": { + "attribute": { + "type": "string", + "description": "The request attribute the rule inspects.", + "enum": [ + "header", + "query-string" + ] + }, + "criteria": { + "type": "string", + "description": "How `value` is compared against `attribute`.", + "enum": [ + "equals", + "contains", + "regex" + ] + }, + "value": { + "type": "object", + "description": "Key-value matchers for header or query-string attributes.", + "additionalProperties": false, + "required": [ + "key_value_pairs" + ], + "properties": { + "key_value_pairs": { + "type": "array", + "description": "The list of key-value pairs.", + "items": { + "type": "object", + "description": "A key-value pair.", + "required": [ + "key", + "value" + ], + "properties": { + "key": { + "type": "string", + "description": "The header or query-parameter name." + }, + "value": { + "type": "string", + "description": "The expected value." + } + } + } + } + } + } + } + } + ] + } }, "created_at": { "type": "string", "format": "date-time", - "description": "Creation timestamp" + "description": "The timestamp when the rule was created." }, "updated_at": { "type": "string", "format": "date-time", - "description": "Last update timestamp" - }, - "description": { - "type": "string", - "description": "Description of the codebase" - }, - "flags": { - "type": "object", - "properties": { - "is_active": { - "type": "boolean", - "description": "Whether the codebase is active" - }, - "is_meo": { - "type": "boolean", - "description": "Whether the codebase is MEO" - } - }, - "required": [ - "is_active", - "is_meo" - ], - "description": "Feature flags for the codebase" - }, - "hash": { - "type": "string", - "description": "Codebase hash" - }, - "applications_total": { - "type": "integer", - "description": "Total number of applications linked to this codebase" + "description": "The timestamp when the rule was last updated." } }, "required": [ "id", - "label", - "region", - "vcs_url", - "repository_id", + "display_name", + "action", + "priority", + "domains", + "paths", "created_at", "updated_at", - "flags", - "hash", - "applications_total" + "targets" ] }, { @@ -83262,53 +80552,87 @@ ] }, "examples": { - "subscription_codebase_collection": { - "summary": "Subscription codebase collection with pagination", + "custom_rules_response": { + "summary": "Custom rules collection with pagination", "value": { "_links": { "self": { - "href": "https://api.acquia.com/v3/subscriptions/sub-12345/codebases?limit=10&offset=0" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules?limit=2&offset=0" }, "limit": { - "href": "https://api.acquia.com/v3/subscriptions/sub-12345/codebases?offset=0{&limit}", + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules?offset=0{&limit}", "templated": true }, "offset": { - "href": "https://api.acquia.com/v3/subscriptions/sub-12345/codebases?limit=10{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/subscriptions/sub-12345/codebases?limit=10&offset=0{&filter}", + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules?limit=2{&offset}", "templated": true } }, - "count": 1, - "total": 1, + "count": 2, + "total": 5, "pagination": { - "total": 1, - "limit": 10, + "total": 5, + "limit": 2, "offset": 0 }, "_embedded": { "items": [ { - "id": "a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4", - "label": "my-codebase", - "region": "us-east-1", - "vcs_url": "https://github.com/acquia/my-codebase.git", - "repository_id": "12345678", - "created_at": "2024-01-15T10:30:00Z", - "updated_at": "2024-01-15T10:30:00Z", - "description": "Main production codebase", - "flags": { - "is_active": true, - "is_meo": false - }, - "hash": "abc123def456", - "applications_total": 3, + "id": 301, + "display_name": "Block bad bots", + "action": "block", + "priority": 1, + "domains": [ + "example.com" + ], + "paths": [ + "/api/*" + ], + "targets": [ + { + "attribute": "source-ip", + "criteria": "range", + "value": { + "from": "10.0.0.0", + "to": "10.0.0.255" + } + } + ], + "created_at": "2026-05-01T12:00:00Z", + "updated_at": "2026-05-10T09:30:00Z", "_links": { "self": { - "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/301" + } + } + }, + { + "id": 302, + "display_name": "Alert login scans", + "action": "alert", + "priority": 2, + "domains": [ + "shop.example.com" + ], + "paths": [ + "/login" + ], + "targets": [ + { + "attribute": "path", + "criteria": "equals", + "value": { + "values": [ + "/login" + ] + } + } + ], + "created_at": "2026-05-02T08:15:00Z", + "updated_at": "2026-05-11T13:45:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/302" } } } @@ -83549,94 +80873,114 @@ }, "security": [ { - "Codebase_Service_API_BearerAuth": [] + "CDN_API_BearerAuth": [] } ] }, "post": { - "summary": "Creates a new codebase for a subscription.", - "operationId": "createCodebase", + "operationId": "createCustomRuleBySubscriptionUuid", "x-acquia-exposure": { - "stability": "production", - "audience": [ - "public" - ], - "rateLimit": { - "requestsPerSecond": 19, - "burst": 5 - }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "subscriptions:create-codebase" - }, - "mcp": { - "enabled": false - }, - "ops": { - "enabled": false + "command": "subscriptions:create-custom-rule" } - } + }, + "stability": "development", + "audience": [ + "public" + ] }, "x-acquia-operation": { "provider": { - "service": "codebase-service" + "service": "cdn-service" } }, "tags": [ - "Codebases" + "CDNs" ], + "summary": "Creates a custom security rule.", + "description": "Creates a custom security rule for a subscription.", "parameters": [ { - "name": "subscriptionId", + "name": "subscriptionUuid", "in": "path", "required": true, + "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the subscription" + } } ], "requestBody": { - "description": "Codebase creation request body", + "description": "Custom security rule create request body", + "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { - "codebase_id": { + "display_name": { "type": "string", - "format": "uuid", - "description": "Client-supplied UUID for the new codebase" + "description": "The display name of the custom security rule." }, - "label": { + "action": { "type": "string", - "description": "Human-readable label for the codebase" + "enum": [ + "block", + "allow", + "alert" + ], + "description": "The action applied when the rule matches." }, - "region": { - "type": "string", - "description": "AWS region where the codebase will be created" + "priority": { + "type": "integer", + "minimum": 1, + "description": "The priority order for the rule." + }, + "domains": { + "type": "array", + "description": "The domains the rule applies to.", + "items": { + "type": "string", + "description": "A domain name." + } + }, + "paths": { + "type": "array", + "description": "The paths the rule applies to.", + "items": { + "type": "string", + "description": "A path pattern." + } } }, + "additionalProperties": false, "required": [ - "codebase_id", - "label", - "region" + "display_name", + "action", + "domains", + "paths" ], - "additionalProperties": false + "minProperties": 1 }, "examples": { "create": { - "summary": "Create a codebase", - "description": "Creates a new codebase for a subscription", + "summary": "Creates a custom security rule", "value": { - "codebase_id": "a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4", - "label": "my-codebase", - "region": "us-east-1" + "display_name": "Block bad bots", + "action": "block", + "priority": 1, + "domains": [ + "example.com" + ], + "paths": [ + "/api/*" + ] } } } @@ -83645,7 +80989,7 @@ }, "responses": { "200": { - "description": "Codebase created", + "description": "OK", "content": { "application/hal+json": { "schema": { @@ -83809,7 +81153,7 @@ "properties": { "message": { "type": "string", - "const": "Codebase created.", + "const": "The custom security rule has been created.", "description": "Confirmation message" } } @@ -83819,10 +81163,10 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/301" } }, - "message": "Codebase created." + "message": "The custom security rule has been created." } } } @@ -84103,20 +81447,19 @@ }, "security": [ { - "Codebase_Service_API_BearerAuth": [] + "CDN_API_BearerAuth": [] } ] } }, - "/failover-groups": { + "/subscriptions/{subscriptionUuid}/config/security/custom-rules/{customRuleId}": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "summary": "Retrieves a collection of failover groups.", - "operationId": "getFailoverGroups", + "operationId": "findCustomRuleBySubscriptionUuidAndCustomRuleId", "x-acquia-exposure": { "channels": { "rest": { @@ -84124,7 +81467,7 @@ }, "cli": { "enabled": true, - "command": "failover-groups:list" + "command": "subscriptions:find-custom-rule" } }, "stability": "development", @@ -84134,48 +81477,781 @@ }, "x-acquia-operation": { "provider": { - "service": "failover-service" + "service": "cdn-service" } }, "tags": [ - "Failover Groups" + "CDNs" ], - "description": "Retrieves a collection of failover groups. Use the `filter` parameter to scope results by source environment.\n\nFilter syntax:\n- By source environment: `filter=environment_id:`\n", + "summary": "Retrieves a custom security rule.", + "description": "Retrieves a custom security rule for a subscription.", "parameters": [ { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, + "name": "subscriptionUuid", + "in": "path", + "required": true, + "description": "The unique identifier of the subscription.", "schema": { - "type": "integer", - "minimum": 0, - "example": 20 + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" } }, { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, + "name": "customRuleId", + "in": "path", + "required": true, + "description": "The unique identifier of the custom security rule.", "schema": { - "type": "integer", - "minimum": 1, - "example": 10 + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": 1, + "description": "The unique identifier of the custom security rule." + }, + "display_name": { + "type": "string", + "description": "The display name of the custom security rule." + }, + "action": { + "type": "string", + "enum": [ + "block", + "allow", + "alert" + ], + "description": "The action applied when the rule matches." + }, + "priority": { + "type": "integer", + "minimum": 1, + "description": "The priority order for the rule. Lower values are evaluated first.\nPriorities must be unique within a subscription — creating or\nupdating a rule with a priority already in use replaces the\nexisting rule at that priority.\n" + }, + "domains": { + "type": "array", + "description": "The domains the rule applies to.", + "items": { + "type": "string", + "description": "A domain name." + } + }, + "paths": { + "type": "array", + "description": "The paths the rule applies to.", + "items": { + "type": "string", + "description": "A path pattern." + } + }, + "mapped_domains_count": { + "type": "integer", + "description": "The number of domains the rule is mapped to." + }, + "targets": { + "type": "array", + "description": "Conditions that must match for the rule to fire.", + "items": { + "oneOf": [ + { + "description": "Range match for IP or ASN ranges.", + "type": "object", + "required": [ + "attribute", + "criteria", + "value" + ], + "additionalProperties": false, + "properties": { + "attribute": { + "type": "string", + "description": "The request attribute the rule inspects.", + "enum": [ + "source-ip", + "asn" + ] + }, + "criteria": { + "type": "string", + "description": "How `value` is compared against `attribute`.", + "enum": [ + "range" + ] + }, + "value": { + "type": "object", + "description": "Range bounds for IP or ASN ranges.", + "additionalProperties": false, + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "type": "string", + "description": "The start of the range." + }, + "to": { + "type": "string", + "description": "The end of the range." + } + } + } + } + }, + { + "description": "Value-list match for non-header, non-query attributes.", + "type": "object", + "required": [ + "attribute", + "criteria", + "value" + ], + "additionalProperties": false, + "properties": { + "attribute": { + "type": "string", + "description": "The request attribute the rule inspects.", + "enum": [ + "source-ip", + "country", + "method", + "path", + "asn" + ] + }, + "criteria": { + "type": "string", + "description": "How `value` is compared against `attribute`.", + "enum": [ + "equals", + "contains", + "regex" + ] + }, + "value": { + "type": "object", + "description": "A list of candidate values combined with OR.", + "additionalProperties": false, + "required": [ + "values" + ], + "properties": { + "values": { + "type": "array", + "description": "The list of values.", + "items": { + "type": "string", + "description": "A value." + } + } + } + } + } + }, + { + "description": "Key-value match for header or query-string attributes.", + "type": "object", + "required": [ + "attribute", + "criteria", + "value" + ], + "additionalProperties": false, + "properties": { + "attribute": { + "type": "string", + "description": "The request attribute the rule inspects.", + "enum": [ + "header", + "query-string" + ] + }, + "criteria": { + "type": "string", + "description": "How `value` is compared against `attribute`.", + "enum": [ + "equals", + "contains", + "regex" + ] + }, + "value": { + "type": "object", + "description": "Key-value matchers for header or query-string attributes.", + "additionalProperties": false, + "required": [ + "key_value_pairs" + ], + "properties": { + "key_value_pairs": { + "type": "array", + "description": "The list of key-value pairs.", + "items": { + "type": "object", + "description": "A key-value pair.", + "required": [ + "key", + "value" + ], + "properties": { + "key": { + "type": "string", + "description": "The header or query-parameter name." + }, + "value": { + "type": "string", + "description": "The expected value." + } + } + } + } + } + } + } + } + ] + } + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the rule was created." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the rule was last updated." + } + }, + "required": [ + "id", + "display_name", + "action", + "priority", + "domains", + "paths", + "created_at", + "updated_at", + "targets" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "id": 301, + "display_name": "Block bad bots", + "action": "block", + "priority": 1, + "domains": [ + "example.com" + ], + "paths": [ + "/api/*" + ], + "targets": [ + { + "attribute": "source-ip", + "criteria": "range", + "value": { + "from": "10.0.0.0", + "to": "10.0.0.255" + } + }, + { + "attribute": "header", + "criteria": "equals", + "value": { + "key_value_pairs": [ + { + "key": "User-Agent", + "value": "BadBot/1.0" + } + ] + } + } + ], + "created_at": "2026-05-01T12:00:00Z", + "updated_at": "2026-05-10T09:30:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/301" + } + } + } + } + }, + "links": { + "self": { + "operationId": "findCustomRuleBySubscriptionUuidAndCustomRuleId", + "parameters": { + "subscriptionUuid": "$request.path.subscriptionUuid", + "customRuleId": "$request.path.customRuleId" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } } }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, + "CDN_API_BearerAuth": [] + } + ] + }, + "put": { + "operationId": "updateCustomRuleBySubscriptionUuidAndCustomRuleId", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "subscriptions:update-custom-rule" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "cdn-service" + } + }, + "tags": [ + "CDNs" + ], + "summary": "Updates a custom security rule.", + "description": "Updates a custom security rule for a subscription.", + "parameters": [ + { + "name": "subscriptionUuid", + "in": "path", + "required": true, + "description": "The unique identifier of the subscription.", "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" - }, - "example": "status=active;type=standard" + "pattern": "^[a-zA-Z0-9-]+$" + } + }, + { + "name": "customRuleId", + "in": "path", + "required": true, + "description": "The unique identifier of the custom security rule.", + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + } } ], + "requestBody": { + "description": "Custom security rule update request body", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "display_name": { + "type": "string", + "description": "The display name of the custom security rule." + }, + "action": { + "type": "string", + "enum": [ + "block", + "allow", + "alert" + ], + "description": "The action applied when the rule matches." + }, + "priority": { + "type": "integer", + "minimum": 1, + "description": "The priority order for the rule." + }, + "domains": { + "type": "array", + "description": "The domains the rule applies to.", + "items": { + "type": "string", + "description": "A domain name." + } + }, + "paths": { + "type": "array", + "description": "The paths the rule applies to.", + "items": { + "type": "string", + "description": "A path pattern." + } + } + }, + "additionalProperties": false, + "minProperties": 1 + }, + "examples": { + "update": { + "summary": "Updates a custom security rule", + "value": { + "display_name": "Alert login scans", + "action": "alert", + "priority": 2, + "domains": [ + "shop.example.com" + ], + "paths": [ + "/login" + ] + } + } + } + } + } + }, "responses": { "200": { "description": "OK", @@ -84326,264 +82402,388 @@ { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "_embedded" + "message" ] } ] }, { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "The custom security rule has been updated.", + "description": "Confirmation message" + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/301" + } + }, + "message": "The custom security rule has been updated." + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "CDN_API_BearerAuth": [] + } + ] + }, + "delete": { + "operationId": "deleteCustomRuleBySubscriptionUuidAndCustomRuleId", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "subscriptions:delete-custom-rule" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "cdn-service" + } + }, + "tags": [ + "CDNs" + ], + "summary": "Deletes a custom security rule.", + "description": "Deletes a custom security rule for a subscription.", + "parameters": [ + { + "name": "subscriptionUuid", + "in": "path", + "required": true, + "description": "The unique identifier of the subscription.", + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + } + }, + { + "name": "customRuleId", + "in": "path", + "required": true, + "description": "The unique identifier of the custom security rule.", + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ { "type": "object", "properties": { "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "prev": { - "description": "Link to the previous page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "next": { - "description": "Link to the next page (templated)", + "self": { "type": "object", + "description": "HAL link object", "properties": { "href": { "type": "string", @@ -84638,162 +82838,11 @@ "templated": true } ] - }, - "offset": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for offset" - }, - "limit": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for limit" } }, + "required": [ + "self" + ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -84853,894 +82902,149 @@ ] } }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { + "_embedded": { "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" - } - }, - "required": [ - "total", - "limit", - "offset" - ] + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "count", - "total", - "pagination" + "_links" ] - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "The custom security rule has been deleted.", + "description": "Confirmation message" + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/301" + } + }, + "message": "The custom security rule has been deleted." + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 - }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - } - ] - }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "filter": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" - } - } - }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" - } - } - } - ] - } + "message": { + "type": "string" } + }, + "required": [ + "error", + "message" ] }, { "type": "object", "properties": { - "_embedded": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "allOf": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Unique identifier for the failover group.", - "example": "b2c3d4e5-f6a7-8901-bcde-f12345678901" - }, - "name": { - "type": "string", - "description": "The name of the failover group.", - "example": "Primary Failover Group" - }, - "status": { - "type": "string", - "enum": [ - "creating", - "normal", - "failed-over", - "failing-over", - "error", - "deleting", - "deleted" - ], - "description": "The current status of the failover group.", - "example": "normal" - }, - "pairs": { - "type": "array", - "description": "The list of failover pairs belonging to this failover group.", - "items": { - "type": "object", - "properties": { - "service_name": { - "type": "string", - "description": "The name of the service for this failover pair.", - "example": "my-application-service" - }, - "primary_id": { - "type": "string", - "description": "The ID of the primary resource in the failover pair.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "failover_id": { - "type": "string", - "description": "The UUID of the failover resource in the failover pair.", - "example": "f1e2d3c4-b5a6-7890-fedc-ba9876543210" - } - }, - "required": [ - "service_name", - "primary_id", - "failover_id" - ] - } - } - }, - "required": [ - "id", - "name", - "status", - "pairs" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - } - } - }, - "required": [ - "items" - ] + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." } }, "required": [ - "_embedded" + "error", + "message" ] } ] }, - "examples": { - "failover_group_collection": { - "summary": "Failover group collection with pagination", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/failover-groups?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/failover-groups?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/failover-groups?limit=2{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/failover-groups?limit=2&offset=0{&filter}", - "templated": true - } - }, - "count": 1, - "total": 1, - "pagination": { - "total": 1, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", - "name": "Primary Failover Group", - "status": "normal", - "pairs": [ - { - "service_name": "my-application-service", - "primary_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "failover_id": "f1e2d3c4-b5a6-7890-fedc-ba9876543210" - } - ], - "_links": { - "self": { - "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" - } - } - } - ] - } - } - } + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." } } } }, - "400": { - "description": "Validation Error", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] }, - "message": { + { "type": "object", - "additionalProperties": { - "type": "string" + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "required": [ + "error", + "message" + ] } - }, - "required": [ - "error", - "message" ] }, "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "error": "forbidden", + "message": "You do not have permission to perform this action." } } } }, - "401": { - "description": "Unauthorized", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { @@ -85765,11 +83069,11 @@ "properties": { "error": { "type": "string", - "const": "unauthorized" + "const": "not_found" }, "message": { "type": "string", - "const": "You do not have permission to access this resource." + "example": "The resource you are trying to access does not exist, or you do not have access to it." } }, "required": [ @@ -85780,14 +83084,14 @@ ] }, "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." } } } }, - "403": { - "description": "Forbidden", + "409": { + "description": "Conflict", "content": { "application/json": { "schema": { @@ -85812,11 +83116,11 @@ "properties": { "error": { "type": "string", - "const": "forbidden" + "const": "conflict" }, "message": { "type": "string", - "example": "You do not have permission to perform this action." + "example": "The requested operation is invalid or cannot be completed." } }, "required": [ @@ -85827,8 +83131,8 @@ ] }, "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." } } } @@ -85885,13 +83189,19 @@ }, "security": [ { - "Failover_Service_API_BearerAuth": [] + "CDN_API_BearerAuth": [] } ] - }, - "post": { - "summary": "Creates a new failover group.", - "operationId": "createFailoverGroup", + } + }, + "/subscriptions/{subscriptionUuid}/config/security/rate-limiting-rules": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "operationId": "getRateLimitingRulesBySubscriptionUuid", "x-acquia-exposure": { "channels": { "rest": { @@ -85899,7 +83209,7 @@ }, "cli": { "enabled": true, - "command": "failover-groups:create" + "command": "subscriptions:list-rate-limiting-rules" } }, "stability": "development", @@ -85909,45 +83219,73 @@ }, "x-acquia-operation": { "provider": { - "service": "failover-service" + "service": "cdn-service" } }, "tags": [ - "Failover Groups" + "CDNs" ], - "requestBody": { - "description": "Create failover group request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name of the failover group.", - "example": "Primary Failover Group" - } - }, - "required": [ - "name" - ], - "additionalProperties": false - }, - "examples": { - "create": { - "summary": "Creates a new failover group", - "description": "Creates a new failover group with the specified name", - "value": { - "name": "Primary Failover Group" - } - } - } + "summary": "Retrieves a collection of rate limiting rules.", + "description": "Retrieves rate limiting rules for a subscription.", + "parameters": [ + { + "name": "subscriptionUuid", + "in": "path", + "required": true, + "description": "The unique identifier of the subscription.", + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + } + }, + { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "status=active;type=standard" + }, + { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" + }, + { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 } } - }, + ], "responses": { - "202": { - "description": "Failover group creation initiated", + "200": { + "description": "OK", "content": { "application/hal+json": { "schema": { @@ -86095,811 +83433,264 @@ { "type": "object", "properties": { - "message": { - "type": "string", - "description": "The message content" + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] } }, "required": [ - "message" + "_embedded" ] } ] }, { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Failover group creation has been initiated.", - "description": "Confirmation message that the failover group creation has been initiated." - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" - } - }, - "message": "Failover group creation has been initiated." - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Failover_Service_API_BearerAuth": [] - } - ] - } - }, - "/failover-groups/{failoverGroupId}": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "get": { - "summary": "Retrieves a failover group by ID.", - "operationId": "findFailoverGroupByFailoverGroupId", - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "failover-groups:find" - } - }, - "stability": "development", - "audience": [ - "public" - ] - }, - "x-acquia-operation": { - "provider": { - "service": "failover-service" - } - }, - "tags": [ - "Failover Groups" - ], - "parameters": [ - { - "name": "failoverGroupId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the failover group." - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Unique identifier for the failover group.", - "example": "b2c3d4e5-f6a7-8901-bcde-f12345678901" - }, - "name": { - "type": "string", - "description": "The name of the failover group.", - "example": "Primary Failover Group" - }, - "status": { - "type": "string", - "enum": [ - "creating", - "normal", - "failed-over", - "failing-over", - "error", - "deleting", - "deleted" - ], - "description": "The current status of the failover group.", - "example": "normal" - }, - "pairs": { - "type": "array", - "description": "The list of failover pairs belonging to this failover group.", - "items": { - "type": "object", - "properties": { - "service_name": { - "type": "string", - "description": "The name of the service for this failover pair.", - "example": "my-application-service" - }, - "primary_id": { - "type": "string", - "description": "The ID of the primary resource in the failover pair.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "failover_id": { - "type": "string", - "description": "The UUID of the failover resource in the failover pair.", - "example": "f1e2d3c4-b5a6-7890-fedc-ba9876543210" - } - }, - "required": [ - "service_name", - "primary_id", - "failover_id" - ] - } - } - }, - "required": [ - "id", - "name", - "status", - "pairs" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { + "allOf": [ + { + "allOf": [ + { "type": "object", - "description": "HAL link object", "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } + }, + "required": [ + "self" ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } + "_links" ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - }, - "example": { - "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", - "name": "Primary Failover Group", - "status": "normal", - "pairs": [ - { - "service_name": "my-application-service", - "primary_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "failover_id": "f1e2d3c4-b5a6-7890-fedc-ba9876543210" - } - ], - "_links": { - "self": { - "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" - } - } - } - } - }, - "links": { - "self": { - "operationId": "findFailoverGroupByFailoverGroupId", - "parameters": { - "failoverGroupId": "$request.path.failoverGroupId" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" + "required": [ + "_embedded" + ] + } + ] }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Failover_Service_API_BearerAuth": [] - } - ] - }, - "delete": { - "summary": "Deletes a failover group by ID.", - "operationId": "deleteFailoverGroupByFailoverGroupId", - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "failover-groups:delete" - } - }, - "stability": "development", - "audience": [ - "public" - ] - }, - "x-acquia-operation": { - "provider": { - "service": "failover-service" - } - }, - "tags": [ - "Failover Groups" - ], - "parameters": [ - { - "name": "failoverGroupId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the failover group." - } - ], - "responses": { - "202": { - "description": "Failover group deletion initiated", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ { "type": "object", "properties": { "_links": { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", "type": "object", - "description": "HAL link object", "properties": { "href": { "type": "string", @@ -86954,11 +83745,162 @@ "templated": true } ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" } }, - "required": [ - "self" - ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -87018,420 +83960,443 @@ ] } }, - "_embedded": { + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] } }, "required": [ - "_links" + "count", + "total", + "pagination" ] - }, + } + ], + "examples": [ { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true } }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Failover group deletion has been initiated.", - "description": "Confirmation message that the failover group deletion has been initiated." - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" - } - }, - "message": "Failover group deletion has been initiated." - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } }, - "message": { - "type": "string" + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } } - }, - "required": [ - "error", - "message" ] }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Failover_Service_API_BearerAuth": [] - } - ] - } - }, - "/failover-groups/{failoverGroupId}/actions/failover": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "post": { - "summary": "Initiates failover for a failover group.", - "operationId": "failoverFailoverGroupByFailoverGroupId", - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "failover-groups:failover" - } - }, - "stability": "development", - "audience": [ - "public" - ] - }, - "x-acquia-operation": { - "provider": { - "service": "failover-service" - } - }, - "tags": [ - "Failover Groups" - ], - "parameters": [ - { - "name": "failoverGroupId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the failover group." - } - ], - "responses": { - "202": { - "description": "Failover group failover initiated", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ { "allOf": [ { - "type": "object", - "properties": { - "_links": { + "allOf": [ + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "_links": { "type": "object", - "description": "HAL link object", + "description": "HAL links for the resource", "properties": { - "href": { - "type": "string", - "anyOf": [ + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, "required": [ - "href" + "self" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } } + }, + "required": [ + "items" ] } }, "required": [ - "self" - ], + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, "additionalProperties": { "type": "object", "description": "HAL link object", @@ -87490,421 +84455,331 @@ } ] } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true } }, - "required": [ - "_links" - ] + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } }, { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true } }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Failover group failover initiated.", - "description": "Confirmation message that the failover group failover has been initiated." - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" - } - }, - "message": "Failover group failover initiated." - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } } - }, - "required": [ - "error", - "message" ] }, { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Failover_Service_API_BearerAuth": [] - } - ] - } - }, - "/failover-groups/{failoverGroupId}/actions/revert-failover": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "post": { - "summary": "Initiates a revert failover for a failover group.", - "operationId": "revertFailoverFailoverGroupByFailoverGroupId", - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "failover-groups:revert-failover" - } - }, - "stability": "development", - "audience": [ - "public" - ] - }, - "x-acquia-operation": { - "provider": { - "service": "failover-service" - } - }, - "tags": [ - "Failover Groups" - ], - "parameters": [ - { - "name": "failoverGroupId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the failover group." - } - ], - "responses": { - "202": { - "description": "Failover group revert failover initiated", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ { "type": "object", "properties": { "_links": { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "sort": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + ] }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] } - ] + ], + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" } }, - "required": [ - "self" - ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -87963,50 +84838,376 @@ } ] } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", + "templated": true } }, - "required": [ - "_links" - ] - }, - { + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + } + ] + }, + { + "type": "object", + "properties": { + "_embedded": { "type": "object", "properties": { - "message": { - "type": "string", - "description": "The message content" + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": 1, + "description": "The unique identifier of the rate limiting rule." + }, + "display_name": { + "type": "string", + "description": "The display name of the rate limiting rule." + }, + "action": { + "type": "string", + "enum": [ + "block", + "alert" + ], + "description": "The action applied when the rule matches." + }, + "rate_limit_per_minute": { + "type": "string", + "enum": [ + "lenient", + "moderate", + "strict" + ], + "description": "The rate limit category applied to the rule." + }, + "domains": { + "type": "array", + "description": "The domains the rule applies to.", + "items": { + "type": "string", + "description": "A domain name." + } + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the rule was created." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the rule was last updated." + } + }, + "required": [ + "id", + "display_name", + "action", + "rate_limit_per_minute", + "domains", + "created_at", + "updated_at" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } } }, "required": [ - "message" + "items" ] } + }, + "required": [ + "_embedded" ] + } + ] + }, + "examples": { + "rate_limiting_rules_response": { + "summary": "Rate limiting rules collection with pagination", + "value": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?limit=2&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?limit=2{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?limit=2&offset=0{&filter}", + "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?limit=2&offset=0{&sort}", + "templated": true + }, + "next": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?limit=2&offset=2" + } + }, + "count": 2, + "total": 4, + "pagination": { + "total": 4, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": 501, + "display_name": "Rate Rule 1", + "action": "alert", + "rate_limit_per_minute": "lenient", + "domains": [ + "example.com" + ], + "created_at": "2026-05-01T12:00:00Z", + "updated_at": "2026-05-10T09:30:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/501" + } + } + }, + { + "id": 502, + "display_name": "Rate Rule 2", + "action": "block", + "rate_limit_per_minute": "strict", + "domains": [ + "shop.example.com" + ], + "created_at": "2026-05-02T08:15:00Z", + "updated_at": "2026-05-11T13:45:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/502" + } + } + } + ] + } + } + } + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" }, - { + "message": { "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Failover group revert failover initiated.", - "description": "Confirmation message that the failover group revert failover has been initiated." - } + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." } } + }, + "required": [ + "error", + "message" ] }, "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" - } - }, - "message": "Failover group revert failover initiated." + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } } } } @@ -88152,53 +85353,6 @@ } } }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, "500": { "description": "Internal Server Error", "content": { @@ -88251,20 +85405,12 @@ }, "security": [ { - "Failover_Service_API_BearerAuth": [] + "CDN_API_BearerAuth": [] } ] - } - }, - "/failover-groups/{failoverGroupId}/actions/sync": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], + }, "post": { - "summary": "Initiates a sync for a failover group.", - "operationId": "syncFailoverGroupByFailoverGroupId", + "operationId": "createRateLimitingRuleBySubscriptionUuid", "x-acquia-exposure": { "channels": { "rest": { @@ -88272,7 +85418,7 @@ }, "cli": { "enabled": true, - "command": "failover-groups:sync" + "command": "subscriptions:create-rate-limiting-rule" } }, "stability": "development", @@ -88282,27 +85428,91 @@ }, "x-acquia-operation": { "provider": { - "service": "failover-service" + "service": "cdn-service" } }, "tags": [ - "Failover Groups" + "CDNs" ], + "summary": "Creates a rate limiting rule.", + "description": "Creates a rate limiting rule for a subscription.", "parameters": [ { - "name": "failoverGroupId", + "name": "subscriptionUuid", "in": "path", "required": true, + "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the failover group." + } } ], + "requestBody": { + "description": "Rate limiting rule create request body", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "display_name": { + "type": "string", + "description": "The display name of the rate limiting rule." + }, + "action": { + "type": "string", + "enum": [ + "block", + "alert" + ], + "description": "The action applied when the rule matches." + }, + "domains": { + "type": "array", + "description": "The domains the rule applies to.", + "items": { + "type": "string", + "description": "A domain name." + } + }, + "rate_limit_per_minute": { + "type": "string", + "enum": [ + "lenient", + "moderate", + "strict" + ], + "description": "The rate limit category applied to the rule." + } + }, + "additionalProperties": false, + "required": [ + "display_name", + "action", + "rate_limit_per_minute" + ], + "minProperties": 1 + }, + "examples": { + "create": { + "summary": "Creates a rate limiting rule", + "value": { + "display_name": "Rate Rule 1", + "action": "alert", + "rate_limit_per_minute": "lenient", + "domains": [ + "example.com" + ] + } + } + } + } + } + }, "responses": { - "202": { - "description": "Failover group sync initiated", + "200": { + "description": "OK", "content": { "application/hal+json": { "schema": { @@ -88466,8 +85676,8 @@ "properties": { "message": { "type": "string", - "const": "Failover group sync initiated.", - "description": "Confirmation message that the failover group sync has been initiated." + "const": "The rate limiting rule has been created.", + "description": "Confirmation message" } } } @@ -88476,10 +85686,46 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/501" } }, - "message": "Failover group sync initiated." + "message": "The rate limiting rule has been created." + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } } } } @@ -88724,20 +85970,19 @@ }, "security": [ { - "Failover_Service_API_BearerAuth": [] + "CDN_API_BearerAuth": [] } ] } }, - "/environments/{environmentId}/multi-region-failover": { + "/subscriptions/{subscriptionUuid}/config/security/rate-limiting-rules/{rateLimitingRuleId}": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "summary": "Retrieves the multi-region failover status for an environment.", - "operationId": "findMultiRegionFailoverByEnvironmentId", + "operationId": "findRateLimitingRuleBySubscriptionUuidAndRateLimitingRuleId", "x-acquia-exposure": { "channels": { "rest": { @@ -88745,7 +85990,7 @@ }, "cli": { "enabled": true, - "command": "environments:find-multi-region-failover" + "command": "subscriptions:find-rate-limiting-rule" } }, "stability": "development", @@ -88755,22 +86000,34 @@ }, "x-acquia-operation": { "provider": { - "service": "failover-service" + "service": "cdn-service" } }, "tags": [ - "Environments" + "CDNs" ], + "summary": "Retrieves a rate limiting rule.", + "description": "Retrieves a rate limiting rule for a subscription.", "parameters": [ { - "name": "environmentId", + "name": "subscriptionUuid", "in": "path", "required": true, + "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." + } + }, + { + "name": "rateLimitingRuleId", + "in": "path", + "required": true, + "description": "The unique identifier of the rate limiting rule.", + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + } } ], "responses": { @@ -88783,21 +86040,59 @@ { "type": "object", "properties": { - "is_enabled": { - "type": "boolean", - "description": "Whether multi-region failover is enabled for the environment." + "id": { + "type": "integer", + "minimum": 1, + "description": "The unique identifier of the rate limiting rule." }, - "failover_group_id": { + "display_name": { "type": "string", - "description": "The identifier of the failover group associated with the environment." + "description": "The display name of the rate limiting rule." }, - "is_traffic_failed_over": { - "type": "boolean", - "description": "Whether traffic has been failed over to the secondary region." + "action": { + "type": "string", + "enum": [ + "block", + "alert" + ], + "description": "The action applied when the rule matches." + }, + "rate_limit_per_minute": { + "type": "string", + "enum": [ + "lenient", + "moderate", + "strict" + ], + "description": "The rate limit category applied to the rule." + }, + "domains": { + "type": "array", + "description": "The domains the rule applies to.", + "items": { + "type": "string", + "description": "A domain name." + } + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the rule was created." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the rule was last updated." } }, "required": [ - "is_enabled" + "id", + "display_name", + "action", + "rate_limit_per_minute", + "domains", + "created_at", + "updated_at" ] }, { @@ -88941,12 +86236,18 @@ ] }, "example": { - "is_enabled": true, - "failover_group_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", - "is_traffic_failed_over": false, + "id": 501, + "display_name": "Rate Rule 1", + "action": "alert", + "rate_limit_per_minute": "lenient", + "domains": [ + "example.com" + ], + "created_at": "2026-05-01T12:00:00Z", + "updated_at": "2026-05-10T09:30:00Z", "_links": { "self": { - "href": "https://api.acquia.com/v3/environments/a1b2c3d4-e5f6-7890-abcd-ef1234567890/multi-region-failover" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/501" } } } @@ -88954,9 +86255,10 @@ }, "links": { "self": { - "operationId": "findMultiRegionFailoverByEnvironmentId", + "operationId": "findRateLimitingRuleBySubscriptionUuidAndRateLimitingRuleId", "parameters": { - "environmentId": "$request.path.environmentId" + "subscriptionUuid": "$request.path.subscriptionUuid", + "rateLimitingRuleId": "$request.path.rateLimitingRuleId" } } } @@ -89154,13 +86456,12 @@ }, "security": [ { - "Failover_Service_API_BearerAuth": [] + "CDN_API_BearerAuth": [] } ] }, "put": { - "summary": "Enables multi-region failover for an environment.", - "operationId": "saveMultiRegionFailoverByEnvironmentId", + "operationId": "updateRateLimitingRuleBySubscriptionUuidAndRateLimitingRuleId", "x-acquia-exposure": { "channels": { "rest": { @@ -89168,7 +86469,7 @@ }, "cli": { "enabled": true, - "command": "environments:update-multi-region-failover" + "command": "subscriptions:update-rate-limiting-rule" } }, "stability": "development", @@ -89178,49 +86479,87 @@ }, "x-acquia-operation": { "provider": { - "service": "failover-service" + "service": "cdn-service" } }, "tags": [ - "Environments" + "CDNs" ], + "summary": "Updates a rate limiting rule.", + "description": "Updates a rate limiting rule for a subscription.", "parameters": [ { - "name": "environmentId", + "name": "subscriptionUuid", "in": "path", "required": true, + "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." + } + }, + { + "name": "rateLimitingRuleId", + "in": "path", + "required": true, + "description": "The unique identifier of the rate limiting rule.", + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + } } ], "requestBody": { - "description": "Multi-region failover enable request body", + "description": "Rate limiting rule update request body", + "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { - "region": { + "display_name": { "type": "string", - "description": "The region to enable multi-region failover for.", - "example": "us-east-1" + "description": "The display name of the rate limiting rule." + }, + "action": { + "type": "string", + "enum": [ + "block", + "alert" + ], + "description": "The action applied when the rule matches." + }, + "domains": { + "type": "array", + "description": "The domains the rule applies to.", + "items": { + "type": "string", + "description": "A domain name." + } + }, + "rate_limit_per_minute": { + "type": "string", + "enum": [ + "lenient", + "moderate", + "strict" + ], + "description": "The rate limit category applied to the rule." } }, - "required": [ - "region" - ], "additionalProperties": false, "minProperties": 1 }, "examples": { - "enable": { - "summary": "Enables multi-region failover for a region", - "description": "Enables multi-region failover for the specified region", + "update": { + "summary": "Updates a rate limiting rule", "value": { - "region": "us-east-1" + "display_name": "Rate Rule 2", + "action": "block", + "rate_limit_per_minute": "strict", + "domains": [ + "shop.example.com" + ] } } } @@ -89228,8 +86567,8 @@ } }, "responses": { - "202": { - "description": "Multi-region failover enable initiated", + "200": { + "description": "OK", "content": { "application/hal+json": { "schema": { @@ -89393,8 +86732,8 @@ "properties": { "message": { "type": "string", - "const": "Multi-region failover enable has been initiated.", - "description": "Confirmation message that multi-region failover enable has been initiated." + "const": "The rate limiting rule has been updated.", + "description": "Confirmation message" } } } @@ -89403,10 +86742,10 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/environments/a1b2c3d4-e5f6-7890-abcd-ef1234567890/multi-region-failover" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/501" } }, - "message": "Multi-region failover enable has been initiated." + "message": "The rate limiting rule has been updated." } } } @@ -89687,13 +87026,12 @@ }, "security": [ { - "Failover_Service_API_BearerAuth": [] + "CDN_API_BearerAuth": [] } ] }, "delete": { - "summary": "Disables multi-region failover for an environment.", - "operationId": "deleteMultiRegionFailoverByEnvironmentId", + "operationId": "deleteRateLimitingRuleBySubscriptionUuidAndRateLimitingRuleId", "x-acquia-exposure": { "channels": { "rest": { @@ -89701,7 +87039,7 @@ }, "cli": { "enabled": true, - "command": "environments:delete-multi-region-failover" + "command": "subscriptions:delete-rate-limiting-rule" } }, "stability": "development", @@ -89711,27 +87049,39 @@ }, "x-acquia-operation": { "provider": { - "service": "failover-service" + "service": "cdn-service" } }, "tags": [ - "Environments" + "CDNs" ], + "summary": "Deletes a rate limiting rule.", + "description": "Deletes a rate limiting rule for a subscription.", "parameters": [ { - "name": "environmentId", + "name": "subscriptionUuid", "in": "path", "required": true, + "description": "The unique identifier of the subscription.", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." + } + }, + { + "name": "rateLimitingRuleId", + "in": "path", + "required": true, + "description": "The unique identifier of the rate limiting rule.", + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + } } ], "responses": { - "202": { - "description": "Multi-region failover disable initiated", + "200": { + "description": "OK", "content": { "application/hal+json": { "schema": { @@ -89895,8 +87245,8 @@ "properties": { "message": { "type": "string", - "const": "Multi-region failover disable has been initiated.", - "description": "Confirmation message that multi-region failover disable has been initiated." + "const": "The rate limiting rule has been deleted.", + "description": "Confirmation message" } } } @@ -89905,10 +87255,10 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/environments/a1b2c3d4-e5f6-7890-abcd-ef1234567890/multi-region-failover" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/501" } }, - "message": "Multi-region failover disable has been initiated." + "message": "The rate limiting rule has been deleted." } } } @@ -90153,42 +87503,42 @@ }, "security": [ { - "Failover_Service_API_BearerAuth": [] + "CDN_API_BearerAuth": [] } ] } }, - "/newrelic-accounts": { + "/tags": { "servers": [ { - "url": "https://api.acquia.com/v3" + "url": "https://cloud.acquia.com/api-framework/demo-php/api" } ], "get": { - "summary": "Retrieves a collection of New Relic accounts.", - "operationId": "getNewRelicAccounts", + "summary": "Retrieves a collection of tags.", + "operationId": "getTags", "x-acquia-exposure": { "channels": { "rest": { "enabled": true }, "cli": { - "enabled": false, - "command": "new-relic-accounts:list" + "enabled": true, + "command": "tags:list" } }, "stability": "development", "audience": [ - "internal" + "public" ] }, "x-acquia-operation": { "provider": { - "service": "nr-provisioning-svc" + "service": "tag-service" } }, "tags": [ - "New Relic Accounts" + "Tags" ], "parameters": [ { @@ -90223,6 +87573,17 @@ "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" }, "example": "status=active;type=standard" + }, + { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" } ], "responses": { @@ -91470,6 +88831,356 @@ } ] }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "sort": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" + }, + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + } + ] + }, { "type": "object", "properties": { @@ -91483,41 +89194,24 @@ { "type": "object", "properties": { - "entitlement_id": { - "type": "string", - "description": "Acquia entitlement UUID for this New Relic account." - }, - "subscription_id": { - "type": "string", - "description": "Acquia subscription UUID associated with this entitlement." - }, - "nr_account_id": { - "type": "string", - "description": "New Relic account ID; absent until provisioning completes." - }, - "status": { + "name": { "type": "string", - "enum": [ - "provisioning", - "active", - "deprovisioning", - "cancelled", - "transferred-out", - "failed" - ], - "description": "Lifecycle state of the New Relic account: provisioning — creation in progress; active — fully provisioned, NR account and admin invite issued; deprovisioning — cancellation in progress; cancelled — account cancelled, row retained for audit; transferred-out — account transferred out of Acquia parent, not cancelled by this service; failed — a step failed, re-trigger via a new broker event or ops tooling.\n" + "pattern": "^[a-zA-Z0-9-]+$", + "minLength": 1, + "maxLength": 255, + "description": "The name of the tag" }, - "created_at": { + "color": { "type": "string", - "format": "date-time", - "description": "Timestamp when the provisioning record was created." + "pattern": "^#((?:[a-f0-9]{3}){1,2})$", + "minLength": 4, + "maxLength": 7, + "description": "The color of the tag" } }, "required": [ - "entitlement_id", - "subscription_id", - "status", - "created_at" + "name", + "color" ] }, { @@ -91673,73 +89367,68 @@ } ] }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/newrelic-accounts?filter=entitlement_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "limit": { - "href": "https://api.acquia.com/v3/newrelic-accounts?filter=entitlement_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/newrelic-accounts?filter=entitlement_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/newrelic-accounts{?filter}", - "templated": true - } - }, - "count": 1, - "total": 1, - "pagination": { - "total": 1, - "limit": 10, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "entitlement_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "subscription_id": "f9e8d7c6-b5a4-3210-fedc-ba9876543210", - "nr_account_id": "12345678", - "status": "active", - "created_at": "2026-05-26T10:00:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/newrelic-accounts?filter=entitlement_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890" - } + "examples": { + "tag_response": { + "summary": "Tag collection with pagination", + "value": { + "_links": { + "self": { + "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags?limit=2&offset=2" + }, + "limit": { + "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags?offset=2{&limit}", + "templated": true + }, + "offset": { + "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags?limit=2{&offset}", + "templated": true + }, + "filter": { + "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags?limit=2&offset=2{&filter}", + "templated": true + }, + "sort": { + "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags?limit=2&offset=2{&sort}", + "templated": true + }, + "prev": { + "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags?limit=2&offset=0" + }, + "next": { + "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags?offset=4&limit=2" } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "name": "tag-1", + "color": "#ffffff", + "_links": { + "self": { + "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags/tag-1" + } + } + }, + { + "name": "tag-2", + "color": "#000000", + "_links": { + "self": { + "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags/tag-2" + } + } + } + ] } - ] - } - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" } - }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "bad_request", - "message": "The request contains invalid or missing required fields." + } } } } @@ -91838,6 +89527,53 @@ } } }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, "500": { "description": "Internal Server Error", "content": { @@ -91890,21 +89626,20 @@ }, "security": [ { - "New_Relic_Provisioning_API_BearerAuth": [] + "Tag_API_BearerAuth": [] } ] } }, - "/ssh-keys": { + "/tags/{tagName}": { "servers": [ { - "url": "https://api.acquia.com/v3" + "url": "https://cloud.acquia.com/api-framework/demo-php/api" } ], "get": { - "summary": "Gets a list of SSH keys.", - "description": "Gets a list of all SSH keys accessible to the requester. Each key includes\na `user_id` field identifying the owner.\n\nTo look up the owner of an SSH key by fingerprint or public key, apply a\nmandatory filter: `GET /ssh-keys?filter=fingerprint%3D` or\n`GET /ssh-keys?filter=public_key%3D`. The matching key(s) will\ninclude the `user_id` of the owner.\n\nFilterable fields:\n* `label`\n* `fingerprint`\n* `public_key`\n* `user_id`\n\nSortable fields:\n* `label`\n", - "operationId": "getSshKeys", + "summary": "Retrieves a tag by tag name.", + "operationId": "findTagByTagName", "x-acquia-exposure": { "channels": { "rest": { @@ -91912,7 +89647,7 @@ }, "cli": { "enabled": true, - "command": "ssh-keys:list" + "command": "tags:find" } }, "stability": "development", @@ -91922,61 +89657,480 @@ }, "x-acquia-operation": { "provider": { - "service": "ssh-key-service" + "service": "tag-service" } }, "tags": [ - "SSH Keys" + "Tags" ], "parameters": [ { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, + "name": "tagName", + "in": "path", + "required": true, "schema": { - "type": "integer", - "minimum": 0, - "example": 20 + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the tag." + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "minLength": 1, + "maxLength": 255, + "description": "The name of the tag" + }, + "color": { + "type": "string", + "pattern": "^#((?:[a-f0-9]{3}){1,2})$", + "minLength": 4, + "maxLength": 7, + "description": "The color of the tag" + } + }, + "required": [ + "name", + "color" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "name": "tag-1", + "color": "#ffffff", + "_links": { + "self": { + "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags/tag-1" + } + } + } + } + }, + "links": { + "self": { + "operationId": "findTagByTagName", + "parameters": { + "tagName": "$request.path.tagName" + } + } } }, - { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "minimum": 1, - "example": 10 + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } } }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals (default if no operator specified)\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `label=primary` - Filter by label equals primary\n- `fingerprint=@SHA256` - Filter by fingerprint containing \"SHA256\"\n- `label=primary;fingerprint=@SHA256` - label is primary AND fingerprint contains SHA256\n- `label=primary,label=backup` - label is primary OR backup\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + "Tag_API_BearerAuth": [] + } + ] + }, + "put": { + "summary": "Creates a tag if tag does not exist else updates the tag by tag name.", + "operationId": "saveTagByTagName", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true }, - "example": "label=primary;fingerprint=@SHA256" + "cli": { + "enabled": true, + "command": "tags:update" + } }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "tag-service" + } + }, + "tags": [ + "Tags" + ], + "parameters": [ { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, + "name": "tagName", + "in": "path", + "required": true, "schema": { "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + "pattern": "^[a-zA-Z0-9-]+$" }, - "example": "name,-created_at" + "description": "Unique identifier for the tag." } ], + "requestBody": { + "description": "Tag create/update request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "color": { + "type": "string", + "pattern": "^#((?:[a-f0-9]{3}){1,2})$", + "description": "A color for the specified tag" + } + }, + "additionalProperties": false, + "minProperties": 1 + }, + "examples": { + "save": { + "summary": "Saves a tag", + "description": "Saves a tag with specified color", + "value": { + "color": "#000000" + } + } + } + } + } + }, "responses": { - "200": { - "description": "OK", + "202": { + "description": "Create/Updates a tag", "content": { "application/hal+json": { "schema": { @@ -92037,6 +90191,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -92090,6 +90253,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -92106,418 +90278,943 @@ { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "_embedded" + "message" ] } ] }, { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "The tag has been saved.", + "description": "Confirmation message that the tag is saved" + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags/tag-3" + } + }, + "message": "The tag has been saved." + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "prev": { - "description": "Link to the previous page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - }, - "next": { - "description": "Link to the next page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Tag_API_BearerAuth": [] + } + ] + }, + "delete": { + "summary": "Deletes a tag by tag name.", + "operationId": "deleteTagByTagName", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "tags:delete" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "tag-service" + } + }, + "tags": [ + "Tags" + ], + "parameters": [ + { + "name": "tagName", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the tag." + } + ], + "responses": { + "200": { + "description": "Deletes a tag", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - "offset": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "The tag has been deleted.", + "description": "Confirmation message that the tag is deleted" + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://cloud.acquia.com/api-framework/demo-php/api/tags/tag-1" + } + }, + "message": "The tag has been deleted." + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Tag_API_BearerAuth": [] + } + ] + } + }, + "/codebases": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Retrieves a list of codebases accessible by the user.", + "description": "Retrieves a paginated collection of codebases. Use the `filter` parameter to scope results by association.\n\nFilter syntax:\n- By application: `filter=application_id%3D` (e.g. `filter=application_id%3Dabc-123`)\n", + "operationId": "getCodebases", + "x-acquia-exposure": { + "stability": "production", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + }, + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "codebases:list" + }, + "mcp": { + "enabled": false + }, + "ops": { + "enabled": false + } + } + }, + "x-acquia-operation": { + "provider": { + "service": "codebase-service" + } + }, + "tags": [ + "Codebases" + ], + "parameters": [ + { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "status=active;type=standard" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + { + "format": "uri-template" } - }, - "required": [ - "href" - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - { - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } + }, + "required": [ + "href" ], - "description": "Templated link for offset" - }, - "limit": { - "allOf": [ + "examples": [ { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] + "href": "https://api.acquia.com/v3/resources/1" }, { - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "Templated link for limit" + ] } }, + "required": [ + "self" + ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -92565,44 +91262,50 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { "type": "object", + "description": "Embedded resources for the collection", "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } } }, "required": [ - "total", - "limit", - "offset" + "items" ] } }, "required": [ - "count", - "total", - "pagination" + "_embedded" ] } ] @@ -92665,9 +91368,18 @@ }, "required": [ "href" - ] - } - }, + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, "required": [ "self" ], @@ -92718,6 +91430,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -92763,7 +91484,123 @@ "_links": { "type": "object", "properties": { - "filter": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "offset": { "allOf": [ { "type": "object", @@ -92812,9 +91649,19 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] }, { + "type": "object", "properties": { "templated": { "type": "boolean", @@ -92828,7 +91675,84 @@ ] } ], - "description": "Templated link for filtering." + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" } }, "additionalProperties": { @@ -92878,9 +91802,199 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] + } + }, + "required": [ + "count", + "total", + "pagination" + ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] } } ] @@ -92943,6 +92057,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -92996,6 +92119,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -93041,7 +92173,7 @@ "_links": { "type": "object", "properties": { - "sort": { + "filter": { "allOf": [ { "type": "object", @@ -93090,9 +92222,19 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] }, { + "type": "object", "properties": { "templated": { "type": "boolean", @@ -93106,7 +92248,7 @@ ] } ], - "description": "Templated link for sorting." + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" } }, "additionalProperties": { @@ -93156,20 +92298,95 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } } } } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } + } ] }, { "type": "object", - "description": "A collection of SSH keys.", "properties": { "_embedded": { "type": "object", - "description": "A collection of SSH keys matching the request parameters.", "properties": { "items": { "type": "array", @@ -93177,46 +92394,81 @@ "allOf": [ { "type": "object", - "required": [ - "id", - "label", - "public_key", - "fingerprint", - "created_at", - "user_id" - ], - "description": "Details an SSH key.", "properties": { "id": { "type": "string", - "description": "The unique identifier of the SSH key.", - "pattern": "^[a-zA-Z0-9-]+$" + "description": "Unique identifier for the codebase" }, "label": { "type": "string", - "description": "The human-readable key label." + "description": "Human-readable label for the codebase" }, - "public_key": { + "region": { "type": "string", - "description": "The public key.", - "minLength": 64 + "description": "AWS region of the codebase" }, - "fingerprint": { + "vcs_url": { "type": "string", - "description": "The public key fingerprint.", - "pattern": "^[A-Za-z0-9:+/=.-]+$" + "format": "uri", + "description": "VCS repository URL" + }, + "repository_id": { + "type": "string", + "description": "VCS repository identifier" }, "created_at": { "type": "string", "format": "date-time", - "description": "The key creation date." + "description": "Creation timestamp" }, - "user_id": { + "updated_at": { "type": "string", - "description": "The unique identifier of the user who owns this SSH key.", - "pattern": "^[a-zA-Z0-9-]+$" + "format": "date-time", + "description": "Last update timestamp" + }, + "description": { + "type": "string", + "description": "Description of the codebase" + }, + "flags": { + "type": "object", + "properties": { + "is_active": { + "type": "boolean", + "description": "Whether the codebase is active" + }, + "is_meo": { + "type": "boolean", + "description": "Whether the codebase is MEO" + } + }, + "required": [ + "is_active", + "is_meo" + ], + "description": "Feature flags for the codebase" + }, + "hash": { + "type": "string", + "description": "Codebase hash" + }, + "applications_total": { + "type": "integer", + "description": "Total number of applications linked to this codebase" } - } + }, + "required": [ + "id", + "label", + "region", + "vcs_url", + "repository_id", + "created_at", + "updated_at", + "flags", + "hash", + "applications_total" + ] }, { "type": "object", @@ -93272,6 +92524,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -93325,6 +92586,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -93354,65 +92624,53 @@ ] }, "examples": { - "ssh_keys": { - "summary": "SSH key collection", + "codebase_collection": { + "summary": "Codebase collection with pagination", "value": { "_links": { "self": { - "href": "https://api.acquia.com/v3/ssh-keys?limit=2&offset=0" + "href": "https://api.acquia.com/v3/codebases?limit=10&offset=0" }, "limit": { - "href": "https://api.acquia.com/v3/ssh-keys?offset=0{&limit}", + "href": "https://api.acquia.com/v3/codebases?offset=0{&limit}", "templated": true }, "offset": { - "href": "https://api.acquia.com/v3/ssh-keys?limit=2{&offset}", + "href": "https://api.acquia.com/v3/codebases?limit=10{&offset}", "templated": true }, "filter": { - "href": "https://api.acquia.com/v3/ssh-keys?limit=2&offset=0{&filter}", - "templated": true - }, - "sort": { - "href": "https://api.acquia.com/v3/ssh-keys?limit=2&offset=0{&sort}", + "href": "https://api.acquia.com/v3/codebases?limit=10&offset=0{&filter}", "templated": true - }, - "next": { - "href": "https://api.acquia.com/v3/ssh-keys?limit=2&offset=2" } }, - "count": 2, - "total": 6, + "count": 1, + "total": 1, "pagination": { - "total": 6, - "limit": 2, + "total": 1, + "limit": 10, "offset": 0 }, "_embedded": { "items": [ { - "id": "1acbb1a5-e864-4b8e-a3f9-b1ed462afd25", - "label": "primary", - "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQChwPHzTTDKDpSbpa2+d22LcbQmsw92eLsUK3Fmei1fiGDkd34NsYCN8m7lsi3NbvdMS83CtPQPWiCveYPzFs1/hHc4PYj8opD2CNnr5iWVVbyaulCYHCgVv4aB/ojcexg8q483A4xJeF15TiCr/gu34rK6ucTvC/tn/rCwJBudczvEwt0klqYwv8Cl/ytaQboSuem5KgSjO3lMrb6CWtfSNhE43ZOw+UBFBqxIninN868vGMkIv9VY34Pwj54rPn/ItQd6Ef4B0KHHaGmzK0vfP+AK7FxNMoHnj3iYT33KZNqtDozdn5tYyH/bThPebEtgqUn+/w5l6wZIC/8zzvls/127ngHk+jNa0PlNyS2TxhPUK4NaPHIEnnrlp07JEYC4ImcBjaYCWAdcTcUkcJjwZQkN4bGmyO9cjICH98SdLD/HxqzTHeaYDbAX/Hu9HfaBb5dXLWsjw3Xc6hoVnUUZbMQyfgb0KgxDLh92eNGxJkpZiL0VDNOWCxDWsNpzwhLNkLqCvI6lyxiLaUzvJAk6dPaRhExmCbU1lDO2eR0FdSwC1TEhJOT9eDIK1r2hztZKs2oa5FNFfB/IFHVWasVFC9N2h/r/egB5zsRxC9MqBLRBq95NBxaRSFng6ML5WZSw41Qi4C/JWVm89rdj2WqScDHYyAdwyyppWU4T5c9Fmw== example@example.com", - "fingerprint": "SHA256:7a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8g9h0i1j2k3l4m5n6o7p8q9r0s1", - "created_at": "2024-10-01T12:30:00Z", - "user_id": "a47ac10b-58cc-4372-a567-0e02b2c3d479", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/ssh-keys/1acbb1a5-e864-4b8e-a3f9-b1ed462afd25" - } - } - }, - { - "id": "2bcbb1a5-e864-4b8e-a3f9-b1ed462afd26", - "label": "backup", - "public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFf2T1I1d8T1B9Q1b8pS6m2xvY3i5q8sNnU5oQwY5vS9 example@example.com", - "fingerprint": "SHA256:9b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d2e1f0a9b8", - "created_at": "2024-10-02T09:15:00Z", - "user_id": "b58bd21c-69dd-5483-b678-1f13c3d4e580", + "id": "a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4", + "label": "my-codebase", + "region": "us-east-1", + "vcs_url": "https://github.com/acquia/my-codebase.git", + "repository_id": "12345678", + "created_at": "2024-01-15T10:30:00Z", + "updated_at": "2024-01-15T10:30:00Z", + "description": "Main production codebase", + "flags": { + "is_active": true, + "is_meo": false + }, + "hash": "abc123def456", + "applications_total": 3, "_links": { "self": { - "href": "https://api.acquia.com/v3/ssh-keys/2bcbb1a5-e864-4b8e-a3f9-b1ed462afd26" + "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4" } } } @@ -93425,34 +92683,36 @@ } }, "400": { - "description": "Bad Request - Validation Error", + "description": "Validation Error", "content": { "application/json": { "schema": { "type": "object", - "required": [ - "error", - "message" - ], - "description": "A validation error.", "properties": { "error": { - "type": "string", - "description": "The error summary." + "type": "string" }, "message": { "type": "object", - "description": "The validation error message keyed by its field or group name.", "additionalProperties": { "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." } } - } + }, + "required": [ + "error", + "message" + ] }, "example": { "error": "validation_failed", "message": { - "field_name": "This field is required." + "field_name": "This field is required.", + "another_field": "This field must be a valid format." } } } @@ -93466,20 +92726,18 @@ "allOf": [ { "type": "object", - "required": [ - "error", - "message" - ], "properties": { "error": { - "type": "string", - "description": "The error summary." + "type": "string" }, "message": { - "type": "string", - "description": "The long description for the returned error." + "type": "string" } - } + }, + "required": [ + "error", + "message" + ] }, { "type": "object", @@ -93515,20 +92773,18 @@ "allOf": [ { "type": "object", - "required": [ - "error", - "message" - ], "properties": { "error": { - "type": "string", - "description": "The error summary." + "type": "string" }, "message": { - "type": "string", - "description": "The long description for the returned error." + "type": "string" } - } + }, + "required": [ + "error", + "message" + ] }, { "type": "object", @@ -93564,20 +92820,18 @@ "allOf": [ { "type": "object", - "required": [ - "error", - "message" - ], "properties": { "error": { - "type": "string", - "description": "The error summary." + "type": "string" }, "message": { - "type": "string", - "description": "The long description for the returned error." + "type": "string" } - } + }, + "required": [ + "error", + "message" + ] }, { "type": "object", @@ -93610,589 +92864,169 @@ }, "security": [ { - "SSH_Key_Service_API_BearerAuth": [] + "Codebase_Service_API_BearerAuth": [] } ] - }, - "post": { - "summary": "Installs a new SSH key for the current user.", - "description": "Installs a new SSH key for the current user.", - "operationId": "createSshKey", + } + }, + "/codebases/{codebaseId}": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Retrieves a codebase by its ID.", + "operationId": "findCodebaseByCodebaseId", "x-acquia-exposure": { + "stability": "production", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "ssh-keys:create" + "command": "codebases:find" + }, + "mcp": { + "enabled": false + }, + "ops": { + "enabled": false } - }, - "stability": "development", - "audience": [ - "public" - ] + } }, "x-acquia-operation": { "provider": { - "service": "ssh-key-service" + "service": "codebase-service" } }, "tags": [ - "SSH Keys" + "Codebases" ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "label", - "public_key" - ], - "description": "Describes the request body for an SSH key.", - "properties": { - "label": { - "type": "string", - "description": "The SSH key label." - }, - "public_key": { - "type": "string", - "description": "The public key." - } - }, - "additionalProperties": false, - "minProperties": 1 - }, - "example": { - "label": "mykey", - "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQChwPHzTTDKDpSbpa2+d22LcbQmsw92eLsUK3Fmei1fiGDkd34NsYCN8m7lsi3NbvdMS83CtPQPWiCveYPzFs1/hHc4PYj8opD2CNnr5iWVVbyaulCYHCgVv4aB/ojcexg8q483A4xJeF15TiCr/gu34rK6ucTvC/tn/rCwJBudczvEwt0klqYwv8Cl/ytaQboSuem5KgSjO3lMrb6CWtfSNhE43ZOw+UBFBqxIninN868vGMkIv9VY34Pwj54rPn/ItQd6Ef4B0KHHaGmzK0vfP+AK7FxNMoHnj3iYT33KZNqtDozdn5tYyH/bThPebEtgqUn+/w5l6wZIC/8zzvls/127ngHk+jNa0PlNyS2TxhPUK4NaPHIEnnrlp07JEYC4ImcBjaYCWAdcTcUkcJjwZQkN4bGmyO9cjICH98SdLD/HxqzTHeaYDbAX/Hu9HfaBb5dXLWsjw3Xc6hoVnUUZbMQyfgb0KgxDLh92eNGxJkpZiL0VDNOWCxDWsNpzwhLNkLqCvI6lyxiLaUzvJAk6dPaRhExmCbU1lDO2eR0FdSwC1TEhJOT9eDIK1r2hztZKs2oa5FNFfB/IFHVWasVFC9N2h/r/egB5zsRxC9MqBLRBq95NBxaRSFng6ML5WZSw41Qi4C/JWVm89rdj2WqScDHYyAdwyyppWU4T5c9Fmw== example@example.com" - } - } + "parameters": [ + { + "name": "codebaseId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the codebase." } - }, + ], "responses": { - "202": { - "description": "Accepted", + "200": { + "description": "OK", "content": { "application/hal+json": { "schema": { "allOf": [ { - "allOf": [ - { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique identifier for the codebase" + }, + "label": { + "type": "string", + "description": "Human-readable label for the codebase" + }, + "region": { + "type": "string", + "description": "AWS region of the codebase" + }, + "vcs_url": { + "type": "string", + "format": "uri", + "description": "VCS repository URL" + }, + "repository_id": { + "type": "string", + "description": "VCS repository identifier" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Creation timestamp" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "Last update timestamp" + }, + "description": { + "type": "string", + "description": "Description of the codebase" + }, + "flags": { "type": "object", - "required": [ - "message" - ], "properties": { - "message": { - "type": "string", - "description": "The human-friendly confirmation of the operation." + "is_active": { + "type": "boolean", + "description": "Whether the codebase is active" + }, + "is_meo": { + "type": "boolean", + "description": "Whether the codebase is MEO" } - } + }, + "required": [ + "is_active", + "is_meo" + ], + "description": "Feature flags for the codebase" }, - { + "hash": { + "type": "string", + "description": "Codebase hash" + }, + "applications_total": { + "type": "integer", + "description": "Total number of applications linked to this codebase" + } + }, + "required": [ + "id", + "label", + "region", + "vcs_url", + "repository_id", + "created_at", + "updated_at", + "flags", + "hash", + "applications_total" + ] + }, + { + "type": "object", + "properties": { + "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "_links": { + "self": { "type": "object", - "description": "HAL links for the resource", + "description": "HAL link object", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Added SSH key.", - "description": "Confirmation message." - } - } - } - ] - }, - "example": { - "message": "Added SSH key.", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/ssh-keys/981b7910-2fe9-11e9-b210-d663bd873d93" - } - } - } - } - } - }, - "400": { - "description": "Bad Request - Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "error", - "message" - ], - "description": "A validation error.", - "properties": { - "error": { - "type": "string", - "description": "The error summary." - }, - "message": { - "type": "object", - "description": "The validation error message keyed by its field or group name.", - "additionalProperties": { - "type": "string" - } - } - } - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required." - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "required": [ - "error", - "message" - ], - "properties": { - "error": { - "type": "string", - "description": "The error summary." - }, - "message": { - "type": "string", - "description": "The long description for the returned error." - } - } - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "required": [ - "error", - "message" - ], - "properties": { - "error": { - "type": "string", - "description": "The error summary." - }, - "message": { - "type": "string", - "description": "The long description for the returned error." - } - } - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "required": [ - "error", - "message" - ], - "properties": { - "error": { - "type": "string", - "description": "The error summary." - }, - "message": { - "type": "string", - "description": "The long description for the returned error." - } - } - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "required": [ - "error", - "message" - ], - "properties": { - "error": { - "type": "string", - "description": "The error summary." - }, - "message": { - "type": "string", - "description": "The long description for the returned error." - } - } - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "SSH_Key_Service_API_BearerAuth": [] - } - ] - } - }, - "/ssh-keys/{sshKeyId}": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "get": { - "summary": "Gets an SSH key.", - "description": "Gets an SSH key by SSH Key ID.", - "operationId": "findSshKeyBySshKeyId", - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "ssh-keys:find" - } - }, - "stability": "development", - "audience": [ - "public" - ] - }, - "x-acquia-operation": { - "provider": { - "service": "ssh-key-service" - } - }, - "tags": [ - "SSH Keys" - ], - "parameters": [ - { - "name": "sshKeyId", - "in": "path", - "description": "The SSH key's unique identifier.", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "example": "981b7910-2fe9-11e9-b210-d663bd873d93" - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "required": [ - "id", - "label", - "public_key", - "fingerprint", - "created_at", - "user_id" - ], - "description": "Details an SSH key.", - "properties": { - "id": { - "type": "string", - "description": "The unique identifier of the SSH key.", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "label": { - "type": "string", - "description": "The human-readable key label." - }, - "public_key": { - "type": "string", - "description": "The public key.", - "minLength": 64 - }, - "fingerprint": { - "type": "string", - "description": "The public key fingerprint.", - "pattern": "^[A-Za-z0-9:+/=.-]+$" - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "The key creation date." - }, - "user_id": { - "type": "string", - "description": "The unique identifier of the user who owns this SSH key.", - "pattern": "^[a-zA-Z0-9-]+$" - } - } - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" + { + "format": "uri-template" } ], "description": "The target URI of the link (can be a URI or URI template)" @@ -94228,6 +93062,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -94281,6 +93124,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -94297,27 +93149,27 @@ ] }, "example": { - "id": "1acbb1a5-e864-4b8e-a3f9-b1ed462afd25", - "label": "primary", - "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQChwPHzTTDKDpSbpa2+d22LcbQmsw92eLsUK3Fmei1fiGDkd34NsYCN8m7lsi3NbvdMS83CtPQPWiCveYPzFs1/hHc4PYj8opD2CNnr5iWVVbyaulCYHCgVv4aB/ojcexg8q483A4xJeF15TiCr/gu34rK6ucTvC/tn/rCwJBudczvEwt0klqYwv8Cl/ytaQboSuem5KgSjO3lMrb6CWtfSNhE43ZOw+UBFBqxIninN868vGMkIv9VY34Pwj54rPn/ItQd6Ef4B0KHHaGmzK0vfP+AK7FxNMoHnj3iYT33KZNqtDozdn5tYyH/bThPebEtgqUn+/w5l6wZIC/8zzvls/127ngHk+jNa0PlNyS2TxhPUK4NaPHIEnnrlp07JEYC4ImcBjaYCWAdcTcUkcJjwZQkN4bGmyO9cjICH98SdLD/HxqzTHeaYDbAX/Hu9HfaBb5dXLWsjw3Xc6hoVnUUZbMQyfgb0KgxDLh92eNGxJkpZiL0VDNOWCxDWsNpzwhLNkLqCvI6lyxiLaUzvJAk6dPaRhExmCbU1lDO2eR0FdSwC1TEhJOT9eDIK1r2hztZKs2oa5FNFfB/IFHVWasVFC9N2h/r/egB5zsRxC9MqBLRBq95NBxaRSFng6ML5WZSw41Qi4C/JWVm89rdj2WqScDHYyAdwyyppWU4T5c9Fmw== example@example.com", - "fingerprint": "SHA256:7a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8g9h0i1j2k3l4m5n6o7p8q9r0s1", - "created_at": "2024-10-01T12:30:00Z", - "user_id": "a47ac10b-58cc-4372-a567-0e02b2c3d479", + "id": "a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4", + "label": "my-codebase", + "region": "us-east-1", + "vcs_url": "https://github.com/acquia/my-codebase.git", + "repository_id": "12345678", + "created_at": "2024-01-15T10:30:00Z", + "updated_at": "2024-01-15T10:30:00Z", + "description": "Main production codebase", + "flags": { + "is_active": true, + "is_meo": false + }, + "hash": "abc123def456", + "applications_total": 3, "_links": { "self": { - "href": "https://api.acquia.com/v3/ssh-keys/1acbb1a5-e864-4b8e-a3f9-b1ed462afd25" + "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4" } } } } - }, - "links": { - "self": { - "operationId": "findSshKeyBySshKeyId", - "parameters": { - "sshKeyId": "$request.path.sshKeyId" - } - } } }, "401": { @@ -94328,20 +93180,18 @@ "allOf": [ { "type": "object", - "required": [ - "error", - "message" - ], "properties": { "error": { - "type": "string", - "description": "The error summary." + "type": "string" }, "message": { - "type": "string", - "description": "The long description for the returned error." + "type": "string" } - } + }, + "required": [ + "error", + "message" + ] }, { "type": "object", @@ -94377,20 +93227,18 @@ "allOf": [ { "type": "object", - "required": [ - "error", - "message" - ], "properties": { "error": { - "type": "string", - "description": "The error summary." + "type": "string" }, "message": { - "type": "string", - "description": "The long description for the returned error." + "type": "string" } - } + }, + "required": [ + "error", + "message" + ] }, { "type": "object", @@ -94426,20 +93274,18 @@ "allOf": [ { "type": "object", - "required": [ - "error", - "message" - ], "properties": { "error": { - "type": "string", - "description": "The error summary." + "type": "string" }, "message": { - "type": "string", - "description": "The long description for the returned error." + "type": "string" } - } + }, + "required": [ + "error", + "message" + ] }, { "type": "object", @@ -94475,20 +93321,18 @@ "allOf": [ { "type": "object", - "required": [ - "error", - "message" - ], "properties": { "error": { - "type": "string", - "description": "The error summary." + "type": "string" }, "message": { - "type": "string", - "description": "The long description for the returned error." + "type": "string" } - } + }, + "required": [ + "error", + "message" + ] }, { "type": "object", @@ -94521,71 +93365,99 @@ }, "security": [ { - "SSH_Key_Service_API_BearerAuth": [] + "Codebase_Service_API_BearerAuth": [] } ] }, - "delete": { - "summary": "Deletes an SSH key.", - "description": "Deletes an SSH key by SSH Key ID.", - "operationId": "deleteSshKeyBySshKeyId", + "put": { + "summary": "Updates a codebase by its ID.", + "operationId": "updateCodebaseByCodebaseId", "x-acquia-exposure": { + "stability": "production", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "ssh-keys:delete" + "command": "codebases:update" + }, + "mcp": { + "enabled": false + }, + "ops": { + "enabled": false } - }, - "stability": "development", - "audience": [ - "public" - ] + } }, "x-acquia-operation": { "provider": { - "service": "ssh-key-service" + "service": "codebase-service" } }, "tags": [ - "SSH Keys" + "Codebases" ], "parameters": [ { - "name": "sshKeyId", + "name": "codebaseId", "in": "path", - "description": "The SSH key's unique identifier.", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "example": "981b7910-2fe9-11e9-b210-d663bd873d93" + "description": "Unique identifier for the codebase." } ], + "requestBody": { + "description": "Codebase update request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "label": { + "type": "string", + "description": "Human-readable label for the codebase" + }, + "description": { + "type": "string", + "description": "Description of the codebase" + } + }, + "minProperties": 1, + "additionalProperties": false + }, + "examples": { + "update": { + "summary": "Update a codebase", + "description": "Updates an existing codebase's label and description", + "value": { + "label": "updated-codebase-label", + "description": "Updated codebase description" + } + } + } + } + } + }, "responses": { - "202": { - "description": "Accepted", + "200": { + "description": "Codebase updated", "content": { "application/hal+json": { "schema": { "allOf": [ { "allOf": [ - { - "type": "object", - "required": [ - "message" - ], - "properties": { - "message": { - "type": "string", - "description": "The human-friendly confirmation of the operation." - } - } - }, { "type": "object", "properties": { @@ -94640,6 +93512,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -94693,6 +93574,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -94705,6 +93595,18 @@ "required": [ "_links" ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] } ] }, @@ -94713,19 +93615,55 @@ "properties": { "message": { "type": "string", - "const": "Removed SSH key.", - "description": "Confirmation message." + "const": "Codebase updated.", + "description": "Confirmation message" } } } ] }, "example": { - "message": "Removed SSH key.", "_links": { "self": { - "href": "https://api.acquia.com/v3/ssh-keys/1acbb1a5-e864-4b8e-a3f9-b1ed462afd25" + "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4" } + }, + "message": "Codebase updated." + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." } } } @@ -94739,20 +93677,18 @@ "allOf": [ { "type": "object", - "required": [ - "error", - "message" - ], "properties": { "error": { - "type": "string", - "description": "The error summary." + "type": "string" }, "message": { - "type": "string", - "description": "The long description for the returned error." + "type": "string" } - } + }, + "required": [ + "error", + "message" + ] }, { "type": "object", @@ -94788,20 +93724,18 @@ "allOf": [ { "type": "object", - "required": [ - "error", - "message" - ], "properties": { "error": { - "type": "string", - "description": "The error summary." + "type": "string" }, "message": { - "type": "string", - "description": "The long description for the returned error." + "type": "string" } - } + }, + "required": [ + "error", + "message" + ] }, { "type": "object", @@ -94837,20 +93771,18 @@ "allOf": [ { "type": "object", - "required": [ - "error", - "message" - ], "properties": { "error": { - "type": "string", - "description": "The error summary." + "type": "string" }, "message": { - "type": "string", - "description": "The long description for the returned error." + "type": "string" } - } + }, + "required": [ + "error", + "message" + ] }, { "type": "object", @@ -94886,20 +93818,18 @@ "allOf": [ { "type": "object", - "required": [ - "error", - "message" - ], "properties": { "error": { - "type": "string", - "description": "The error summary." + "type": "string" }, "message": { - "type": "string", - "description": "The long description for the returned error." + "type": "string" } - } + }, + "required": [ + "error", + "message" + ] }, { "type": "object", @@ -94935,20 +93865,18 @@ "allOf": [ { "type": "object", - "required": [ - "error", - "message" - ], "properties": { "error": { - "type": "string", - "description": "The error summary." + "type": "string" }, "message": { - "type": "string", - "description": "The long description for the returned error." + "type": "string" } - } + }, + "required": [ + "error", + "message" + ] }, { "type": "object", @@ -94981,83 +93909,61 @@ }, "security": [ { - "SSH_Key_Service_API_BearerAuth": [] + "Codebase_Service_API_BearerAuth": [] } ] - } - }, - "/subscriptions/{subscriptionId}/sso-domains": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "post": { - "operationId": "createSsoDomainBySubscriptionId", - "summary": "Create a new domain for federated SSO.", - "tags": [ - "Domains" - ], + }, + "delete": { + "summary": "Deletes a codebase by its ID.", + "operationId": "deleteCodebaseByCodebaseId", "x-acquia-exposure": { + "stability": "production", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "subscriptions:create-sso-domain" + "command": "codebases:delete" + }, + "mcp": { + "enabled": false + }, + "ops": { + "enabled": false } - }, - "stability": "development", - "audience": [ - "public" - ] + } }, "x-acquia-operation": { "provider": { - "service": "identity-service" + "service": "codebase-service" } }, + "tags": [ + "Codebases" + ], "parameters": [ { - "name": "subscriptionId", + "name": "codebaseId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the subscription." + "description": "Unique identifier for the codebase." } ], - "requestBody": { - "description": "Request body for creating a new domain.", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z]{2,})+$", - "description": "The domain name to create (e.g., \"acme.com\")." - } - }, - "required": [ - "domain" - ], - "additionalProperties": false - }, - "example": { - "domain": "acme.com" - } - } - } - }, "responses": { - "202": { - "description": "Domain creation accepted. The domain is being added to your subscription. To complete verification, add the provided DNS TXT record and call the verify action.", + "200": { + "description": "Codebase deleted", "content": { "application/hal+json": { "schema": { @@ -95220,7 +94126,9 @@ "type": "object", "properties": { "message": { - "const": "Domain creation has been accepted." + "type": "string", + "const": "Codebase deleted.", + "description": "Confirmation message" } } } @@ -95229,46 +94137,10 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/sso-domains/dom-456" - } - }, - "message": "Domain creation has been accepted." - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4" } }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "message": "Codebase deleted." } } } @@ -95513,46 +94385,63 @@ }, "security": [ { - "Federated_Authentication_API_BearerAuth": [] + "Codebase_Service_API_BearerAuth": [] } ] - }, + } + }, + "/codebases/{codebaseId}/references": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], "get": { - "summary": "Return a list of domains for a subscription.", - "operationId": "getSsoDomainsBySubscriptionId", - "tags": [ - "Domains" - ], + "summary": "Retrieves a list of git references for a codebase.", + "operationId": "getReferencesByCodebaseId", "x-acquia-exposure": { + "stability": "production", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "subscriptions:list-sso-domains" + "command": "codebases:list-references" + }, + "mcp": { + "enabled": false + }, + "ops": { + "enabled": false } - }, - "stability": "development", - "audience": [ - "public" - ] + } }, "x-acquia-operation": { "provider": { - "service": "identity-service" + "service": "codebase-service" } }, + "tags": [ + "Codebase References" + ], "parameters": [ { - "name": "subscriptionId", + "name": "codebaseId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the subscription." + "description": "Unique identifier for the codebase." }, { "name": "offset", @@ -95575,33 +94464,11 @@ "minimum": 1, "example": 10 } - }, - { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" - }, - "example": "name,-created_at" - }, - { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" - }, - "example": "status=active;type=standard" } ], "responses": { "200": { - "description": "OK", + "description": "A list of git references for the codebase", "content": { "application/hal+json": { "schema": { @@ -96461,739 +95328,6 @@ } ] }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "filter": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" - } - } - }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" - } - } - } - ] - } - } - ] - }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "sort": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" - }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - } - ] - }, { "type": "object", "properties": { @@ -97207,112 +95341,27 @@ { "type": "object", "properties": { - "domain_id": { - "type": "string", - "description": "Unique identifier for the domain." - }, - "domain": { + "id": { "type": "string", - "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z]{2,})+$", - "description": "The domain name (e.g., \"acme.com\")." + "description": "Unique identifier for the reference" }, - "subscription_id": { + "name": { "type": "string", - "description": "Unique identifier for the subscription that the domain belongs to." - }, - "health": { - "type": "object", - "description": "The overall verification health of the domain. Uses the same code semantics as the platform email domain-verification system: `200` verified, `202` verification pending or in progress, `404` DNS record not found or could not be validated.", - "properties": { - "code": { - "type": "string", - "enum": [ - "200", - "202", - "404" - ], - "description": "Machine-readable verification status code. `200` — verified. `202` — verification pending or in progress; retry after propagation. `404` — DNS TXT record not found or does not match expected value." - }, - "summary": { - "type": "string", - "description": "Short human-readable label for the verification state (e.g., \"Verified\", \"Verification pending\", \"Missing DNS record\")." - }, - "details": { - "type": "string", - "description": "Actionable explanation of the current state. For `404`, describes what was checked and what the customer should do next." - } - }, - "required": [ - "code", - "summary", - "details" - ] - }, - "verification_record": { - "type": "object", - "description": "DNS TXT record the customer must publish to verify domain ownership.", - "properties": { - "type": { - "type": "string", - "const": "TXT", - "description": "DNS record type." - }, - "host": { - "type": "string", - "description": "DNS record host name." - }, - "value": { - "type": "string", - "description": "Expected DNS record value." - }, - "health": { - "type": "object", - "description": "Verification health specific to this DNS record. Anchors the failure reason to the exact record the customer needs to fix, matching the per-record health pattern used in platform email domain verification.", - "properties": { - "code": { - "type": "string", - "enum": [ - "200", - "202", - "404" - ], - "description": "`200` — record found and value matches. `202` — check in progress. `404` — record not found or value does not match." - }, - "summary": { - "type": "string", - "description": "Short human-readable label for this record's verification state." - }, - "details": { - "type": "string", - "description": "Actionable explanation; for `404`, states what was checked and what to fix." - } - }, - "required": [ - "code", - "summary", - "details" - ] - } - }, - "required": [ - "type", - "host", - "value", - "health" - ] + "description": "Name of the git reference" }, - "verified_at": { + "type": { "type": "string", - "format": "date-time", - "description": "Timestamp when the domain was successfully verified. Present only when `health.code` is `200`." + "enum": [ + "branch", + "tag" + ], + "description": "Type of the git reference" } }, "required": [ - "domain_id", - "domain", - "subscription_id", - "health", - "verification_record" + "id", + "name", + "type" ] }, { @@ -97468,104 +95517,50 @@ } ] }, - "examples": { - "domain_response": { - "summary": "Domain collection with pagination", - "description": "Two domains in different states: one verified and in use by a policy (carries `identity_providers` link), one pending verification (carries `verify` link).", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?limit=2{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?limit=2&offset=0{&filter}", - "templated": true - }, - "sort": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?limit=2&offset=0{&sort}", - "templated": true - }, - "next": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?offset=2&limit=2" + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4/references?limit=10&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4/references?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4/references?limit=10{&offset}", + "templated": true + } + }, + "count": 2, + "total": 2, + "pagination": { + "total": 2, + "limit": 10, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "ref-123", + "name": "main", + "type": "branch", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4/references/main" + } } }, - "count": 2, - "total": 3, - "pagination": { - "total": 3, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "domain_id": "dom-456", - "domain": "acme.com", - "subscription_id": "sub-123", - "health": { - "code": "200", - "summary": "Verified", - "details": "The DNS TXT record has been confirmed and the domain is verified." - }, - "verification_record": { - "type": "TXT", - "host": "_acquia-challenge.acme.com", - "value": "abc123def456", - "health": { - "code": "200", - "summary": "Verified", - "details": "The TXT record at _acquia-challenge.acme.com matches the expected value." - } - }, - "verified_at": "2026-04-15T10:30:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sso-domains/dom-456" - }, - "identity_providers": { - "href": "https://api.acquia.com/v3/identity-providers?filter=domain_id%3Ddom-456" - } - } - }, - { - "domain_id": "dom-789", - "domain": "acme.corp", - "subscription_id": "sub-123", - "health": { - "code": "202", - "summary": "Verification pending", - "details": "Acquia is waiting to confirm the DNS TXT record. Ensure the record has been published and allow time for DNS propagation, then retry verification." - }, - "verification_record": { - "type": "TXT", - "host": "_acquia-challenge.acme.corp", - "value": "xyz789abc123", - "health": { - "code": "202", - "summary": "Check in progress", - "details": "The TXT record check has not yet completed." - } - }, - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sso-domains/dom-789" - }, - "verify": { - "href": "https://api.acquia.com/v3/sso-domains/dom-789/actions/verify" - } - } + { + "id": "ref-456", + "name": "v1.0.0", + "type": "tag", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4/references/v1.0.0" } - ] + } } - } + ] } } } @@ -97800,312 +95795,256 @@ }, "security": [ { - "Federated_Authentication_API_BearerAuth": [] + "Codebase_Service_API_BearerAuth": [] } ] } }, - "/subscriptions/{subscriptionId}/identity-providers": { + "/codebases/{codebaseId}/references/{referenceName}": { "servers": [ { "url": "https://api.acquia.com/v3" } ], - "post": { - "operationId": "createIdentityProviderBySubscriptionId", - "summary": "Create a new Identity Provider.", - "tags": [ - "Identity Providers" - ], + "get": { + "summary": "Retrieves a single git reference for a codebase.", + "operationId": "findReferenceByCodebaseIdAndReferenceName", "x-acquia-exposure": { + "stability": "production", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "subscriptions:create-identity-provider" + "command": "codebases:find-reference" + }, + "mcp": { + "enabled": false + }, + "ops": { + "enabled": false } - }, - "stability": "development", - "audience": [ - "public" - ] + } }, "x-acquia-operation": { "provider": { - "service": "identity-service" + "service": "codebase-service" } }, + "tags": [ + "Codebase References" + ], "parameters": [ { - "name": "subscriptionId", + "name": "codebaseId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the subscription." - } - ], - "requestBody": { - "description": "Request body for creating a new Identity Provider.", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "idp_entity_id": { - "type": "string", - "format": "uri", - "description": "The Identity Provider Entity ID." - }, - "label": { - "type": "string", - "description": "The name of the Identity Provider." - }, - "sso_url": { - "type": "string", - "format": "uri", - "description": "The SSO URL for this IdP." - }, - "certificate": { - "type": "string", - "description": "The certificate for this IdP." - } - }, - "required": [ - "label", - "idp_entity_id", - "sso_url", - "certificate" - ], - "additionalProperties": false - }, - "example": { - "label": "Acme Corporation Azure AD", - "idp_entity_id": "https://idp.acme.com/saml", - "sso_url": "https://acme.com/sso", - "certificate": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----" - } + "description": "Unique identifier for the codebase." + }, + { + "name": "referenceName", + "in": "path", + "required": true, + "description": "Name of the git reference (branch or tag). Slashes must be URL-encoded as `%2F` in the path (e.g., `feature%2Fbranch-name`).", + "schema": { + "type": "string", + "pattern": "^[^/]+$" } } - }, + ], "responses": { - "202": { - "description": "Identity Provider creation initiated. The Identity Provider is being provisioned. Poll the Identity Provider resource to check when it becomes active.", + "200": { + "description": "OK", "content": { "application/hal+json": { "schema": { "allOf": [ { - "allOf": [ - { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique identifier for the reference" + }, + "name": { + "type": "string", + "description": "Name of the git reference" + }, + "type": { + "type": "string", + "enum": [ + "branch", + "tag" + ], + "description": "Type of the git reference" + } + }, + "required": [ + "id", + "name", + "type" + ] + }, + { + "type": "object", + "properties": { + "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "_links": { + "self": { "type": "object", - "description": "HAL links for the resource", + "description": "HAL link object", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "self" + "href" ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" }, - "required": [ - "href" - ], - "examples": [ + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - { + "_embedded": { "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] + "description": "Embedded resources (optional)", + "additionalProperties": {} } + }, + "required": [ + "_links" ] - }, - { - "type": "object", - "properties": { - "message": { - "const": "Identity Provider creation has been accepted." - } - } } ] }, "example": { + "id": "ref-123", + "name": "main", + "type": "branch", "_links": { "self": { - "href": "https://api.acquia.com/v3/identity-providers/9078ead6-dfc9-4868-8800-723fb6da706f" - } - }, - "message": "Identity Provider creation has been accepted." - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4/references/main" } - }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." } } } @@ -98252,53 +96191,6 @@ } } }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, "500": { "description": "Internal Server Error", "content": { @@ -98351,15 +96243,22 @@ }, "security": [ { - "Federated_Authentication_API_BearerAuth": [] + "Codebase_Service_API_BearerAuth": [] } ] - }, + } + }, + "/codebases/{codebaseId}/domain-patterns": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], "get": { - "summary": "Return a list of Identity Providers for a subscription.", - "operationId": "getIdentityProvidersBySubscriptionId", + "summary": "Retrieves a collection of domain patterns for the specified codebase.", + "operationId": "getDomainPatternsByCodebaseId", "tags": [ - "Identity Providers" + "Domain Patterns" ], "x-acquia-exposure": { "channels": { @@ -98368,29 +96267,33 @@ }, "cli": { "enabled": true, - "command": "subscriptions:list-identity-providers" + "command": "codebases:list-domain-patterns" } }, "stability": "development", "audience": [ "public" - ] + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } }, "x-acquia-operation": { "provider": { - "service": "identity-service" + "service": "codebase-service" } }, "parameters": [ { - "name": "subscriptionId", + "name": "codebaseId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the subscription." + "description": "Unique identifier for the codebase." }, { "name": "offset", @@ -98424,17 +96327,6 @@ "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" }, "example": "name,-created_at" - }, - { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" - }, - "example": "status=active;type=standard" } ], "responses": { @@ -99467,389 +97359,6 @@ } ] }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "filter": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" - } - } - }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" - } - } - } - ] - } - } - ] - }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, { "type": "object", "properties": { @@ -100045,52 +97554,22 @@ { "type": "object", "properties": { - "identity_provider_id": { - "type": "string", - "description": "Unique identifier for the identity provider." - }, - "label": { - "type": "string", - "description": "The name of the Identity Provider." - }, - "subscription_id": { - "type": "string", - "description": "Unique identifier for the subscription that the Identity Provider belongs to." - }, - "idp_entity_id": { - "type": "string", - "format": "uri", - "description": "The Identity Provider Entity ID." - }, - "sp_entity_id": { - "type": "string", - "format": "uri", - "description": "The Service Provider Entity ID." - }, - "sso_url": { - "type": "string", - "format": "uri", - "description": "The Single Sign-On URL for the Identity Provider." - }, - "certificate": { + "id": { "type": "string", - "description": "The X.509 certificate used for SAML authentication." + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the domain pattern." }, - "created_at": { + "pattern": { "type": "string", - "format": "date-time", - "description": "Timestamp when the Identity Provider was created." + "maxLength": 455, + "pattern": "^(?=.*\\[site-name\\])(?=.*\\[environment-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", + "description": "The domain pattern string, optionally followed by a single path segment (e.g. [site-name].[environment-name].acme.com/app). Both [site-name] and [environment-name] tokens are mandatory at codebase level. Domain rules (enforced in service layer): ≤ 200 chars excluding token placeholders, at least 2 components (must contain .), no IP addresses, no forbidden suffixes (acquia-sites.com, hosting.acquia.com), no wildcards, no leading/trailing dot or hyphen, no consecutive dots, no query string or fragment. Path rules: optional, max 255 chars, must match ^/[A-Za-z0-9._-]+$, max 1 segment. DNS label limit: 63 chars after token substitution ([site-name] ≤ 14 chars, [environment-name] ≤ 10 chars). One pattern per codebase.\n", + "example": "[site-name].[environment-name].acme.com" } }, "required": [ - "identity_provider_id", - "label", - "subscription_id", - "idp_entity_id", - "sp_entity_id", - "sso_url", - "certificate", - "created_at" + "id", + "pattern" ] }, { @@ -100247,84 +97726,79 @@ ] }, "examples": { - "identity_provider_response": { - "summary": "Identity provider collection with pagination", + "domain_pattern_collection": { + "summary": "Domain pattern collection", "value": { "_links": { "self": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?limit=2&offset=2" + "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns" }, "limit": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?offset=2{&limit}", + "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns?offset=0{&limit}", "templated": true }, "offset": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?limit=2{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?limit=2&offset=2{&filter}", + "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns?limit=25{&offset}", "templated": true }, "sort": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?limit=2&offset=2{&sort}", + "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns?limit=25&offset=0{&sort}", "templated": true - }, - "prev": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?limit=2&offset=0" - }, - "next": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?offset=4&limit=2" } }, - "count": 2, - "total": 6, + "count": 1, + "total": 1, "pagination": { - "total": 6, - "limit": 2, - "offset": 2 + "total": 1, + "limit": 25, + "offset": 0 }, "_embedded": { "items": [ { - "identity_provider_id": "908914ec-2354-4fb1-9298-637247eccc3a", - "label": "Acme Corporation Azure AD", - "subscription_id": "sub-123", - "idp_entity_id": "https://idp.acme.com/saml", - "sp_entity_id": "https://sp.acme.com/saml", - "sso_url": "https://acme.com/sso", - "certificate": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----", - "created_at": "2026-04-15T11:00:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/identity-providers/908914ec-2354-4fb1-9298-637247eccc3a" - }, - "sso_policy": { - "href": "https://api.acquia.com/v3/identity-providers/908914ec-2354-4fb1-9298-637247eccc3a/policies/sso" - } - } - }, - { - "identity_provider_id": "123456ec-2354-4fb1-9298-637247eccc3b", - "label": "Acme Research Ping Identity", - "subscription_id": "sub-123", - "idp_entity_id": "https://idp-research.acme.com/saml", - "sp_entity_id": "https://sp-research.acme.com/saml", - "sso_url": "https://research.acme.com/sso", - "certificate": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----", - "created_at": "2026-04-20T14:20:00Z", + "id": "22222222-2222-2222-2222-222222222222", + "pattern": "[site-name].[environment-name].acme.com", "_links": { "self": { - "href": "https://api.acquia.com/v3/identity-providers/123456ec-2354-4fb1-9298-637247eccc3b" - }, - "sso_policy": { - "href": "https://api.acquia.com/v3/identity-providers/123456ec-2354-4fb1-9298-637247eccc3b/policies/sso" + "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns/22222222-2222-2222-2222-222222222222" } } } ] } } + }, + "domain_pattern_collection_empty": { + "summary": "Empty domain pattern collection", + "value": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns" + }, + "limit": { + "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns?limit=25{&offset}", + "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns?limit=25&offset=0{&sort}", + "templated": true + } + }, + "count": 0, + "total": 0, + "pagination": { + "total": 0, + "limit": 25, + "offset": 0 + }, + "_embedded": { + "items": [] + } + } } } } @@ -100559,22 +98033,15 @@ }, "security": [ { - "Federated_Authentication_API_BearerAuth": [] + "Codebase_Service_API_BearerAuth": [] } ] - } - }, - "/sso-domains": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], - "get": { - "summary": "Return a list of all accessible domains.", - "operationId": "getSsoDomains", + }, + "post": { + "summary": "Creates a domain pattern for the specified codebase.", + "operationId": "createDomainPatternByCodebaseId", "tags": [ - "Domains" + "Domain Patterns" ], "x-acquia-exposure": { "channels": { @@ -100583,68 +98050,68 @@ }, "cli": { "enabled": true, - "command": "sso-domains:list" + "command": "codebases:create-domain-pattern" } }, "stability": "development", "audience": [ "public" - ] + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } }, "x-acquia-operation": { "provider": { - "service": "identity-service" + "service": "codebase-service" } }, "parameters": [ { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "example": 20 - } - }, - { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "minimum": 1, - "example": 10 - } - }, - { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" - }, - "example": "name,-created_at" - }, - { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, + "name": "codebaseId", + "in": "path", + "required": true, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + "pattern": "^[a-zA-Z0-9-]+$" }, - "example": "status=active;type=standard" + "description": "Unique identifier for the codebase." } ], + "requestBody": { + "description": "Create domain pattern request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "pattern": { + "type": "string", + "maxLength": 455, + "pattern": "^(?=.*\\[site-name\\])(?=.*\\[environment-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", + "description": "The domain pattern to apply to all associated sites in this codebase, optionally followed by a single path segment. Both [site-name] and [environment-name] tokens are mandatory. Domain ≤ 200 chars excluding token placeholders; optional path max 255 chars matching ^/[A-Za-z0-9._-]+$. Additional semantic rules (no IPs, no forbidden suffixes, no wildcards, one pattern per codebase) are enforced at the service layer.\n" + } + }, + "required": [ + "pattern" + ], + "additionalProperties": false + }, + "examples": { + "create_domain_pattern": { + "summary": "Create a domain pattern", + "value": { + "pattern": "[site-name].[environment-name].acme.com" + } + } + } + } + } + }, "responses": { - "200": { - "description": "OK", + "202": { + "description": "Domain pattern creation initiated.", "content": { "application/hal+json": { "schema": { @@ -100792,474 +98259,926 @@ { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "_embedded" + "message" ] } ] }, { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Created custom domain pattern. Unique domains are being created for each site.", + "description": "Confirmation message that the domain pattern is being applied." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns/22222222-2222-2222-2222-222222222222" + } + }, + "message": "Created custom domain pattern. Unique domains are being created for each site." + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "prev": { - "description": "Link to the previous page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "next": { - "description": "Link to the next page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "offset": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Codebase_Service_API_BearerAuth": [] + } + ] + } + }, + "/codebases/{codebaseId}/domain-patterns/{patternId}": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Retrieves a domain pattern by codebase ID and pattern ID.", + "operationId": "findDomainPatternByCodebaseIdAndPatternId", + "tags": [ + "Domain Patterns" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "codebases:find-domain-pattern" + } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "codebase-service" + } + }, + "parameters": [ + { + "name": "codebaseId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the codebase." + }, + { + "name": "patternId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the domain pattern." + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the domain pattern." + }, + "pattern": { + "type": "string", + "maxLength": 455, + "pattern": "^(?=.*\\[site-name\\])(?=.*\\[environment-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", + "description": "The domain pattern string, optionally followed by a single path segment (e.g. [site-name].[environment-name].acme.com/app). Both [site-name] and [environment-name] tokens are mandatory at codebase level. Domain rules (enforced in service layer): ≤ 200 chars excluding token placeholders, at least 2 components (must contain .), no IP addresses, no forbidden suffixes (acquia-sites.com, hosting.acquia.com), no wildcards, no leading/trailing dot or hyphen, no consecutive dots, no query string or fragment. Path rules: optional, max 255 chars, must match ^/[A-Za-z0-9._-]+$, max 1 segment. DNS label limit: 63 chars after token substitution ([site-name] ≤ 14 chars, [environment-name] ≤ 10 chars). One pattern per codebase.\n", + "example": "[site-name].[environment-name].acme.com" + } + }, + "required": [ + "id", + "pattern" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" }, { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] + "format": "uri-template" } ], - "description": "Templated link for offset" + "description": "The target URI of the link (can be a URI or URI template)" }, - "limit": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "id": "22222222-2222-2222-2222-222222222222", + "pattern": "[site-name].[environment-name].acme.com", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns/22222222-2222-2222-2222-222222222222" + } + } + } + } + }, + "links": { + "self": { + "operationId": "findDomainPatternByCodebaseIdAndPatternId", + "parameters": { + "codebaseId": "$request.path.codebaseId", + "patternId": "$request.path.patternId" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Codebase_Service_API_BearerAuth": [] + } + ] + }, + "put": { + "summary": "Updates a domain pattern for the specified codebase.", + "operationId": "updateDomainPatternByCodebaseIdAndPatternId", + "tags": [ + "Domain Patterns" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "codebases:update-domain-pattern" + } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "codebase-service" + } + }, + "parameters": [ + { + "name": "codebaseId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the codebase." + }, + { + "name": "patternId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the domain pattern." + } + ], + "requestBody": { + "description": "Update domain pattern request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "pattern": { + "type": "string", + "maxLength": 455, + "pattern": "^(?=.*\\[site-name\\])(?=.*\\[environment-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", + "description": "The updated domain pattern to apply to all associated sites in this codebase, optionally followed by a single path segment. Both [site-name] and [environment-name] tokens are mandatory. Domain ≤ 200 chars excluding token placeholders; optional path max 255 chars matching ^/[A-Za-z0-9._-]+$. Additional semantic rules (no IPs, no forbidden suffixes, no wildcards, one pattern per codebase) are enforced at the service layer.\n" + } + }, + "required": [ + "pattern" + ], + "additionalProperties": false, + "minProperties": 1 + }, + "examples": { + "update_domain_pattern": { + "summary": "Update a domain pattern", + "value": { + "pattern": "[site-name].[environment-name].acme.com" + } + } + } + } + } + }, + "responses": { + "202": { + "description": "Domain pattern update initiated.", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } + }, + "required": [ + "href" ], - "description": "Templated link for limit" + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } }, + "required": [ + "self" + ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -101319,443 +99238,463 @@ ] } }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { + "_embedded": { "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" - } - }, - "required": [ - "total", - "limit", - "offset" - ] + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "count", - "total", - "pagination" + "_links" ] - } - ], - "examples": [ + }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Saved custom domain pattern. Updating existing generated domains.", + "description": "Confirmation message that the domain pattern update is being applied." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns/22222222-2222-2222-2222-222222222222" + } + }, + "message": "Saved custom domain pattern. Updating existing generated domains." + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 - }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" } + }, + "required": [ + "error", + "message" ] }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Codebase_Service_API_BearerAuth": [] + } + ] + }, + "delete": { + "summary": "Deletes a domain pattern for the specified codebase. Engineering role only.", + "operationId": "deleteDomainPatternByCodebaseIdAndPatternId", + "tags": [ + "Domain Patterns" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "codebases:delete-domain-pattern" + } + }, + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + } + }, + "x-acquia-operation": { + "provider": { + "service": "codebase-service" + } + }, + "parameters": [ + { + "name": "codebaseId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the codebase." + }, + { + "name": "patternId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the domain pattern." + } + ], + "responses": { + "202": { + "description": "Domain pattern deletion initiated. The 202 covers two async operations: (1) removal of the pattern record and (2) a bulk cleanup that disassociates any URLs already generated from this pattern on all associated site instances in the codebase. Both operations complete before the final settled state is observable.\n", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ { "allOf": [ { - "allOf": [ - { + "type": "object", + "properties": { + "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "_links": { + "self": { "type": "object", - "description": "HAL links for the resource", + "description": "HAL link object", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "filter": { - "allOf": [ + "href" + ], + "examples": [ { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "href": "https://api.acquia.com/v3/resources/1" }, { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + ] } }, + "required": [ + "self" + ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -101814,844 +99753,150 @@ } ] } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } + "required": [ + "_links" + ] }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" } }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" - } - } - }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" - } - } - } - ] - } + "required": [ + "message" + ] } ] }, { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "sort": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "The domain pattern is being removed from all associated sites in this codebase.", + "description": "Confirmation message that the domain pattern is being removed." } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" - }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/codebases/22222222-2222-2222-2222-222222222222/domain-patterns/22222222-2222-2222-2222-222222222222" + } + }, + "message": "The domain pattern is being removed from all associated sites in this codebase." + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" } + }, + "required": [ + "error", + "message" ] }, { "type": "object", "properties": { - "_embedded": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "allOf": [ - { - "type": "object", - "properties": { - "domain_id": { - "type": "string", - "description": "Unique identifier for the domain." - }, - "domain": { - "type": "string", - "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z]{2,})+$", - "description": "The domain name (e.g., \"acme.com\")." - }, - "subscription_id": { - "type": "string", - "description": "Unique identifier for the subscription that the domain belongs to." - }, - "health": { - "type": "object", - "description": "The overall verification health of the domain. Uses the same code semantics as the platform email domain-verification system: `200` verified, `202` verification pending or in progress, `404` DNS record not found or could not be validated.", - "properties": { - "code": { - "type": "string", - "enum": [ - "200", - "202", - "404" - ], - "description": "Machine-readable verification status code. `200` — verified. `202` — verification pending or in progress; retry after propagation. `404` — DNS TXT record not found or does not match expected value." - }, - "summary": { - "type": "string", - "description": "Short human-readable label for the verification state (e.g., \"Verified\", \"Verification pending\", \"Missing DNS record\")." - }, - "details": { - "type": "string", - "description": "Actionable explanation of the current state. For `404`, describes what was checked and what the customer should do next." - } - }, - "required": [ - "code", - "summary", - "details" - ] - }, - "verification_record": { - "type": "object", - "description": "DNS TXT record the customer must publish to verify domain ownership.", - "properties": { - "type": { - "type": "string", - "const": "TXT", - "description": "DNS record type." - }, - "host": { - "type": "string", - "description": "DNS record host name." - }, - "value": { - "type": "string", - "description": "Expected DNS record value." - }, - "health": { - "type": "object", - "description": "Verification health specific to this DNS record. Anchors the failure reason to the exact record the customer needs to fix, matching the per-record health pattern used in platform email domain verification.", - "properties": { - "code": { - "type": "string", - "enum": [ - "200", - "202", - "404" - ], - "description": "`200` — record found and value matches. `202` — check in progress. `404` — record not found or value does not match." - }, - "summary": { - "type": "string", - "description": "Short human-readable label for this record's verification state." - }, - "details": { - "type": "string", - "description": "Actionable explanation; for `404`, states what was checked and what to fix." - } - }, - "required": [ - "code", - "summary", - "details" - ] - } - }, - "required": [ - "type", - "host", - "value", - "health" - ] - }, - "verified_at": { - "type": "string", - "format": "date-time", - "description": "Timestamp when the domain was successfully verified. Present only when `health.code` is `200`." - } - }, - "required": [ - "domain_id", - "domain", - "subscription_id", - "health", - "verification_record" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - } - } - }, - "required": [ - "items" - ] + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." } }, "required": [ - "_embedded" + "error", + "message" ] } ] }, - "examples": { - "domain_response": { - "summary": "Domain collection with pagination", - "description": "Two domains in different states: one verified and in use by a policy (carries `identity_providers` link), one pending verification (carries `verify` link).", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?limit=2{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?limit=2&offset=0{&filter}", - "templated": true - }, - "sort": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?limit=2&offset=0{&sort}", - "templated": true - }, - "next": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?offset=2&limit=2" - } - }, - "count": 2, - "total": 3, - "pagination": { - "total": 3, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "domain_id": "dom-456", - "domain": "acme.com", - "subscription_id": "sub-123", - "health": { - "code": "200", - "summary": "Verified", - "details": "The DNS TXT record has been confirmed and the domain is verified." - }, - "verification_record": { - "type": "TXT", - "host": "_acquia-challenge.acme.com", - "value": "abc123def456", - "health": { - "code": "200", - "summary": "Verified", - "details": "The TXT record at _acquia-challenge.acme.com matches the expected value." - } - }, - "verified_at": "2026-04-15T10:30:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sso-domains/dom-456" - }, - "identity_providers": { - "href": "https://api.acquia.com/v3/identity-providers?filter=domain_id%3Ddom-456" - } - } - }, - { - "domain_id": "dom-789", - "domain": "acme.corp", - "subscription_id": "sub-123", - "health": { - "code": "202", - "summary": "Verification pending", - "details": "Acquia is waiting to confirm the DNS TXT record. Ensure the record has been published and allow time for DNS propagation, then retry verification." - }, - "verification_record": { - "type": "TXT", - "host": "_acquia-challenge.acme.corp", - "value": "xyz789abc123", - "health": { - "code": "202", - "summary": "Check in progress", - "details": "The TXT record check has not yet completed." - } - }, - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sso-domains/dom-789" - }, - "verify": { - "href": "https://api.acquia.com/v3/sso-domains/dom-789/actions/verify" - } - } - } - ] - } - } - } + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." } } } }, - "400": { - "description": "Validation Error", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] }, - "message": { + { "type": "object", - "additionalProperties": { - "type": "string" + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "required": [ + "error", + "message" + ] } - }, - "required": [ - "error", - "message" ] }, "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "error": "forbidden", + "message": "You do not have permission to perform this action." } } } }, - "401": { - "description": "Unauthorized", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { @@ -102676,11 +99921,11 @@ "properties": { "error": { "type": "string", - "const": "unauthorized" + "const": "not_found" }, "message": { "type": "string", - "const": "You do not have permission to access this resource." + "example": "The resource you are trying to access does not exist, or you do not have access to it." } }, "required": [ @@ -102691,14 +99936,14 @@ ] }, "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." } } } }, - "403": { - "description": "Forbidden", + "409": { + "description": "Conflict", "content": { "application/json": { "schema": { @@ -102723,11 +99968,11 @@ "properties": { "error": { "type": "string", - "const": "forbidden" + "const": "conflict" }, "message": { "type": "string", - "example": "You do not have permission to perform this action." + "example": "The requested operation is invalid or cannot be completed." } }, "required": [ @@ -102738,8 +99983,8 @@ ] }, "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." } } } @@ -102796,689 +100041,506 @@ }, "security": [ { - "Federated_Authentication_API_BearerAuth": [] + "Codebase_Service_API_BearerAuth": [] } ] } }, - "/sso-domains/{domainId}": { + "/subscriptions/{subscriptionId}/codebases": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "summary": "Return details about a specific domain.", - "operationId": "findSsoDomainBySsoDomainId", - "tags": [ - "Domains" - ], + "summary": "Retrieves a list of codebases for a subscription.", + "operationId": "getCodebasesBySubscriptionId", "x-acquia-exposure": { + "stability": "production", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "sso-domains:find" + "command": "subscriptions:list-codebases" + }, + "mcp": { + "enabled": false + }, + "ops": { + "enabled": false } - }, - "stability": "development", - "audience": [ - "public" - ] + } }, "x-acquia-operation": { "provider": { - "service": "identity-service" + "service": "codebase-service" } }, + "tags": [ + "Codebases" + ], "parameters": [ { - "name": "domainId", + "name": "subscriptionId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the domain." + "description": "Unique identifier for the subscription" + }, + { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "status=active;type=standard" } ], "responses": { "200": { - "description": "OK. The `_links` object always contains `self`. Additional links are state-conditional: `verify` is present when `health.code` is `202` or `404` (POST it to initiate or retry DNS TXT record verification); `identity_providers` is present when the domain is referenced by one or more Identity Provider policies (follows to a filtered list of those IdPs; when present the domain cannot be deleted — remove it from all policies first).", + "description": "A list of codebases for the subscription", "content": { "application/hal+json": { "schema": { "allOf": [ { - "type": "object", - "properties": { - "domain_id": { - "type": "string", - "description": "Unique identifier for the domain." - }, - "domain": { - "type": "string", - "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z]{2,})+$", - "description": "The domain name (e.g., \"acme.com\")." - }, - "subscription_id": { - "type": "string", - "description": "Unique identifier for the subscription that the domain belongs to." - }, - "health": { + "allOf": [ + { "type": "object", - "description": "The overall verification health of the domain. Uses the same code semantics as the platform email domain-verification system: `200` verified, `202` verification pending or in progress, `404` DNS record not found or could not be validated.", "properties": { - "code": { - "type": "string", - "enum": [ - "200", - "202", - "404" + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" ], - "description": "Machine-readable verification status code. `200` — verified. `202` — verification pending or in progress; retry after propagation. `404` — DNS TXT record not found or does not match expected value." - }, - "summary": { - "type": "string", - "description": "Short human-readable label for the verification state (e.g., \"Verified\", \"Verification pending\", \"Missing DNS record\")." + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - "details": { - "type": "string", - "description": "Actionable explanation of the current state. For `404`, describes what was checked and what the customer should do next." + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "code", - "summary", - "details" + "_links" ] }, - "verification_record": { + { "type": "object", - "description": "DNS TXT record the customer must publish to verify domain ownership.", "properties": { - "type": { - "type": "string", - "const": "TXT", - "description": "DNS record type." - }, - "host": { - "type": "string", - "description": "DNS record host name." - }, - "value": { - "type": "string", - "description": "Expected DNS record value." - }, - "health": { + "_embedded": { "type": "object", - "description": "Verification health specific to this DNS record. Anchors the failure reason to the exact record the customer needs to fix, matching the per-record health pattern used in platform email domain verification.", + "description": "Embedded resources for the collection", "properties": { - "code": { - "type": "string", - "enum": [ - "200", - "202", - "404" - ], - "description": "`200` — record found and value matches. `202` — check in progress. `404` — record not found or value does not match." - }, - "summary": { - "type": "string", - "description": "Short human-readable label for this record's verification state." - }, - "details": { - "type": "string", - "description": "Actionable explanation; for `404`, states what was checked and what to fix." + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } } }, "required": [ - "code", - "summary", - "details" + "items" ] } }, "required": [ - "type", - "host", - "value", - "health" + "_embedded" ] - }, - "verified_at": { - "type": "string", - "format": "date-time", - "description": "Timestamp when the domain was successfully verified. Present only when `health.code` is `200`." } - }, - "required": [ - "domain_id", - "domain", - "subscription_id", - "health", - "verification_record" ] }, { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { + "allOf": [ + { + "allOf": [ + { "type": "object", - "description": "HAL link object", "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - { - "format": "uri-template" + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } + "required": [ + "_links" + ] }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - }, - "examples": { - "pending_verification": { - "summary": "Domain awaiting DNS verification", - "description": "A newly created domain whose DNS TXT record has not yet been confirmed. `health.code` is `202`; the `verify` link is present so the client can trigger or retry the check. `identity_providers` is absent because no policy can reference an unverified domain.", - "value": { - "domain_id": "dom-789", - "domain": "acme.corp", - "subscription_id": "sub-123", - "health": { - "code": "202", - "summary": "Verification pending", - "details": "Acquia is waiting to confirm the DNS TXT record. Ensure the record has been published and allow time for DNS propagation, then retry verification." - }, - "verification_record": { - "type": "TXT", - "host": "_acquia-challenge.acme.corp", - "value": "xyz789abc123", - "health": { - "code": "202", - "summary": "Check in progress", - "details": "The TXT record check has not yet completed." - } - }, - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sso-domains/dom-789" - }, - "verify": { - "href": "https://api.acquia.com/v3/sso-domains/dom-789/actions/verify" - } - } - } - }, - "failed_verification": { - "summary": "Domain verification failed — DNS record not found", - "description": "A domain whose TXT record could not be found. `health.code` is `404`; `details` names the exact record to check. The `verify` link is present so the client can retry after fixing the DNS entry.", - "value": { - "domain_id": "dom-789", - "domain": "acme.corp", - "subscription_id": "sub-123", - "health": { - "code": "404", - "summary": "Missing DNS record", - "details": "Acquia could not verify the presence of the required TXT DNS record at _acquia-challenge.acme.corp. Ensure the record is published with the correct value and retry verification." - }, - "verification_record": { - "type": "TXT", - "host": "_acquia-challenge.acme.corp", - "value": "xyz789abc123", - "health": { - "code": "404", - "summary": "Missing DNS record", - "details": "The TXT record at _acquia-challenge.acme.corp was not found or does not match the expected value xyz789abc123." - } - }, - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sso-domains/dom-789" - }, - "verify": { - "href": "https://api.acquia.com/v3/sso-domains/dom-789/actions/verify" - } - } - } - }, - "verified_in_use": { - "summary": "Verified domain referenced by an Identity Provider policy", - "description": "A verified domain enforced by at least one Identity Provider policy. `health.code` is `200`; `verify` is absent; `identity_providers` is present. A DELETE on this domain will return 409 until the domain is removed from all policies.", - "value": { - "domain_id": "dom-456", - "domain": "acme.com", - "subscription_id": "sub-123", - "health": { - "code": "200", - "summary": "Verified", - "details": "The DNS TXT record has been confirmed and the domain is verified." - }, - "verification_record": { - "type": "TXT", - "host": "_acquia-challenge.acme.com", - "value": "abc123def456", - "health": { - "code": "200", - "summary": "Verified", - "details": "The TXT record at _acquia-challenge.acme.com matches the expected value." - } - }, - "verified_at": "2026-04-15T10:30:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sso-domains/dom-456" - }, - "identity_providers": { - "href": "https://api.acquia.com/v3/identity-providers?filter=domain_id%3Ddom-456" - } - } - } - } - } - } - }, - "links": { - "self": { - "operationId": "findSsoDomainBySsoDomainId", - "parameters": { - "domainId": "$response.body#/domain_id" - } - }, - "delete": { - "operationId": "deleteSsoDomainBySsoDomainId", - "parameters": { - "domainId": "$response.body#/domain_id" - } - }, - "verify": { - "operationId": "verifySsoDomainBySsoDomainId", - "parameters": { - "domainId": "$response.body#/domain_id" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" + "required": [ + "_embedded" + ] + } + ] }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Federated_Authentication_API_BearerAuth": [] - } - ] - }, - "delete": { - "summary": "Delete a domain.", - "operationId": "deleteSsoDomainBySsoDomainId", - "tags": [ - "Domains" - ], - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "sso-domains:delete" - } - }, - "stability": "development", - "audience": [ - "public" - ] - }, - "x-acquia-operation": { - "provider": { - "service": "identity-service" - } - }, - "parameters": [ - { - "name": "domainId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the domain." - } - ], - "responses": { - "202": { - "description": "Domain deletion accepted. The domain is being deleted.", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ { "type": "object", "properties": { "_links": { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", "type": "object", - "description": "HAL link object", "properties": { "href": { "type": "string", @@ -103533,11 +100595,162 @@ "templated": true } ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" } }, - "required": [ - "self" - ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -103597,100 +100810,912 @@ ] } }, - "_embedded": { + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] } }, "required": [ - "_links" + "count", + "total", + "pagination" ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } }, { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true } }, - "required": [ - "message" - ] + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } } ] }, { - "type": "object", - "properties": { - "message": { - "const": "Domain deletion has been accepted." - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sso-domains/dom-456" - } - }, - "message": "Domain deletion has been accepted." - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } } - }, - "required": [ - "error", - "message" ] }, { "type": "object", "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." + "_embedded": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique identifier for the codebase" + }, + "label": { + "type": "string", + "description": "Human-readable label for the codebase" + }, + "region": { + "type": "string", + "description": "AWS region of the codebase" + }, + "vcs_url": { + "type": "string", + "format": "uri", + "description": "VCS repository URL" + }, + "repository_id": { + "type": "string", + "description": "VCS repository identifier" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Creation timestamp" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "Last update timestamp" + }, + "description": { + "type": "string", + "description": "Description of the codebase" + }, + "flags": { + "type": "object", + "properties": { + "is_active": { + "type": "boolean", + "description": "Whether the codebase is active" + }, + "is_meo": { + "type": "boolean", + "description": "Whether the codebase is MEO" + } + }, + "required": [ + "is_active", + "is_meo" + ], + "description": "Feature flags for the codebase" + }, + "hash": { + "type": "string", + "description": "Codebase hash" + }, + "applications_total": { + "type": "integer", + "description": "Total number of applications linked to this codebase" + } + }, + "required": [ + "id", + "label", + "region", + "vcs_url", + "repository_id", + "created_at", + "updated_at", + "flags", + "hash", + "applications_total" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + }, + "required": [ + "items" + ] } }, "required": [ - "error", - "message" + "_embedded" ] } ] }, + "examples": { + "subscription_codebase_collection": { + "summary": "Subscription codebase collection with pagination", + "value": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/sub-12345/codebases?limit=10&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/subscriptions/sub-12345/codebases?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/subscriptions/sub-12345/codebases?limit=10{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/subscriptions/sub-12345/codebases?limit=10&offset=0{&filter}", + "templated": true + } + }, + "count": 1, + "total": 1, + "pagination": { + "total": 1, + "limit": 10, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4", + "label": "my-codebase", + "region": "us-east-1", + "vcs_url": "https://github.com/acquia/my-codebase.git", + "repository_id": "12345678", + "created_at": "2024-01-15T10:30:00Z", + "updated_at": "2024-01-15T10:30:00Z", + "description": "Main production codebase", + "flags": { + "is_active": true, + "is_meo": false + }, + "hash": "abc123def456", + "applications_total": 3, + "_links": { + "self": { + "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4" + } + } + } + ] + } + } + } + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } } } } }, - "403": { - "description": "Forbidden", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { @@ -103715,11 +101740,11 @@ "properties": { "error": { "type": "string", - "const": "forbidden" + "const": "unauthorized" }, "message": { "type": "string", - "example": "You do not have permission to perform this action." + "const": "You do not have permission to access this resource." } }, "required": [ @@ -103730,14 +101755,14 @@ ] }, "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." + "error": "unauthorized", + "message": "You do not have permission to access this resource." } } } }, - "404": { - "description": "Not Found", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -103762,11 +101787,11 @@ "properties": { "error": { "type": "string", - "const": "not_found" + "const": "forbidden" }, "message": { "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." + "example": "You do not have permission to perform this action." } }, "required": [ @@ -103777,14 +101802,14 @@ ] }, "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." + "error": "forbidden", + "message": "You do not have permission to perform this action." } } } }, - "409": { - "description": "Conflict", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { @@ -103809,11 +101834,11 @@ "properties": { "error": { "type": "string", - "const": "conflict" + "const": "not_found" }, "message": { "type": "string", - "example": "The requested operation is invalid or cannot be completed." + "example": "The resource you are trying to access does not exist, or you do not have access to it." } }, "required": [ @@ -103824,8 +101849,8 @@ ] }, "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." } } } @@ -103882,58 +101907,103 @@ }, "security": [ { - "Federated_Authentication_API_BearerAuth": [] + "Codebase_Service_API_BearerAuth": [] } ] - } - }, - "/sso-domains/{domainId}/actions/verify": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], + }, "post": { - "summary": "Verify domain ownership via DNS TXT record.", - "operationId": "verifySsoDomainBySsoDomainId", - "tags": [ - "Domains" - ], + "summary": "Creates a new codebase for a subscription.", + "operationId": "createCodebase", "x-acquia-exposure": { + "stability": "production", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "sso-domains:verify" + "command": "subscriptions:create-codebase" + }, + "mcp": { + "enabled": false + }, + "ops": { + "enabled": false } - }, - "stability": "development", - "audience": [ - "public" - ] + } }, "x-acquia-operation": { "provider": { - "service": "identity-service" + "service": "codebase-service" } }, + "tags": [ + "Codebases" + ], "parameters": [ { - "name": "domainId", + "name": "subscriptionId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the domain." + "description": "Unique identifier for the subscription" } ], + "requestBody": { + "description": "Codebase creation request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "codebase_id": { + "type": "string", + "format": "uuid", + "description": "Client-supplied UUID for the new codebase" + }, + "label": { + "type": "string", + "description": "Human-readable label for the codebase" + }, + "region": { + "type": "string", + "description": "AWS region where the codebase will be created" + } + }, + "required": [ + "codebase_id", + "label", + "region" + ], + "additionalProperties": false + }, + "examples": { + "create": { + "summary": "Create a codebase", + "description": "Creates a new codebase for a subscription", + "value": { + "codebase_id": "a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4", + "label": "my-codebase", + "region": "us-east-1" + } + } + } + } + } + }, "responses": { - "202": { - "description": "Domain verification process initiated. The system will validate the DNS TXT record to confirm domain ownership. Poll the domain resource and check `health.code` to track progress: `202` in progress, `200` verified, `404` record not found.", + "200": { + "description": "Codebase created", "content": { "application/hal+json": { "schema": { @@ -104097,7 +102167,7 @@ "properties": { "message": { "type": "string", - "const": "Domain verification has been accepted.", + "const": "Codebase created.", "description": "Confirmation message" } } @@ -104107,10 +102177,46 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/sso-domains/dom-456" + "href": "https://api.acquia.com/v3/codebases/a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4" } }, - "message": "Domain verification has been accepted." + "message": "Codebase created." + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } } } } @@ -104355,43 +102461,48 @@ }, "security": [ { - "Federated_Authentication_API_BearerAuth": [] + "Codebase_Service_API_BearerAuth": [] } ] } }, - "/identity-providers": { + "/source-sites": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "summary": "Return a list of all accessible Identity Providers.", - "operationId": "getIdentityProviders", - "tags": [ - "Identity Providers" - ], + "summary": "Retrieves a list of Source sites accessible by the user", + "description": "Returns a paginated list of Source CMS sites that the authenticated user has access to.\n", + "operationId": "getSourceSites", + "x-acquia-operation": { + "provider": { + "service": "sites-aggregation-service" + } + }, "x-acquia-exposure": { + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "identity-providers:list" + "command": "source-sites:list" } - }, - "stability": "development", - "audience": [ - "public" - ] - }, - "x-acquia-operation": { - "provider": { - "service": "identity-service" } }, + "tags": [ + "Source Sites" + ], "parameters": [ { "name": "offset", @@ -104414,28 +102525,6 @@ "minimum": 1, "example": 10 } - }, - { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" - }, - "example": "name,-created_at" - }, - { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" - }, - "example": "status=active;type=standard" } ], "responses": { @@ -105301,796 +103390,61 @@ ] }, { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "filter": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" - } - } - }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" - } - } - } - ] - } - } - ] - }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "sort": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" - }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - } - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "allOf": [ - { - "type": "object", - "properties": { - "identity_provider_id": { - "type": "string", - "description": "Unique identifier for the identity provider." + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "description": "A Source CMS site resource", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the Source site", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "f47ac10b-58cc-4372-a567-0e02b2c3d479" }, "label": { "type": "string", - "description": "The name of the Identity Provider." + "description": "The human-readable label of the site. Must contain only lowercase letters, numbers, hyphens, and spaces.", + "minLength": 4, + "maxLength": 21, + "pattern": "^[a-z0-9]([a-z0-9- ]*[a-z0-9])?$", + "example": "my-source-site" }, "subscription_id": { "type": "string", - "description": "Unique identifier for the subscription that the Identity Provider belongs to." - }, - "idp_entity_id": { - "type": "string", - "format": "uri", - "description": "The Identity Provider Entity ID." - }, - "sp_entity_id": { - "type": "string", - "format": "uri", - "description": "The Service Provider Entity ID." - }, - "sso_url": { - "type": "string", - "format": "uri", - "description": "The Single Sign-On URL for the Identity Provider." + "description": "The unique identifier of the subscription this site belongs to", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" }, - "certificate": { + "status": { "type": "string", - "description": "The X.509 certificate used for SAML authentication." + "description": "The current provisioning status of the site", + "enum": [ + "provisioning", + "ready", + "failed" + ], + "example": "ready" }, "created_at": { "type": "string", "format": "date-time", - "description": "Timestamp when the Identity Provider was created." + "description": "ISO 8601 datetime when the site was created", + "example": "2026-08-18T10:30:00Z" } }, "required": [ - "identity_provider_id", + "id", "label", "subscription_id", - "idp_entity_id", - "sp_entity_id", - "sso_url", - "certificate", + "status", "created_at" ] }, @@ -106248,78 +103602,55 @@ ] }, "examples": { - "identity_provider_response": { - "summary": "Identity provider collection with pagination", + "source_site_collection": { + "summary": "Source site collection with pagination", "value": { "_links": { "self": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?limit=2&offset=2" + "href": "https://api.acquia.com/v3/source-sites?limit=2&offset=0" }, "limit": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?offset=2{&limit}", + "href": "https://api.acquia.com/v3/source-sites?offset=0{&limit}", "templated": true }, "offset": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?limit=2{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?limit=2&offset=2{&filter}", - "templated": true - }, - "sort": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?limit=2&offset=2{&sort}", + "href": "https://api.acquia.com/v3/source-sites?limit=2{&offset}", "templated": true }, - "prev": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?limit=2&offset=0" - }, "next": { - "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?offset=4&limit=2" + "href": "https://api.acquia.com/v3/source-sites?limit=2&offset=2" } }, "count": 2, - "total": 6, + "total": 4, "pagination": { - "total": 6, + "total": 4, "limit": 2, - "offset": 2 + "offset": 0 }, "_embedded": { "items": [ { - "identity_provider_id": "908914ec-2354-4fb1-9298-637247eccc3a", - "label": "Acme Corporation Azure AD", - "subscription_id": "sub-123", - "idp_entity_id": "https://idp.acme.com/saml", - "sp_entity_id": "https://sp.acme.com/saml", - "sso_url": "https://acme.com/sso", - "certificate": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----", - "created_at": "2026-04-15T11:00:00Z", + "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", + "label": "my-source-site", + "subscription_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "status": "ready", + "created_at": "2026-08-18T10:30:00Z", "_links": { "self": { - "href": "https://api.acquia.com/v3/identity-providers/908914ec-2354-4fb1-9298-637247eccc3a" - }, - "sso_policy": { - "href": "https://api.acquia.com/v3/identity-providers/908914ec-2354-4fb1-9298-637247eccc3a/policies/sso" + "href": "https://api.acquia.com/v3/source-sites/f47ac10b-58cc-4372-a567-0e02b2c3d479" } } }, { - "identity_provider_id": "123456ec-2354-4fb1-9298-637247eccc3b", - "label": "Acme Research Ping Identity", - "subscription_id": "sub-123", - "idp_entity_id": "https://idp-research.acme.com/saml", - "sp_entity_id": "https://sp-research.acme.com/saml", - "sso_url": "https://research.acme.com/sso", - "certificate": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----", - "created_at": "2026-04-20T14:20:00Z", + "id": "b2c3d4e5-f6a7-8901-bcde-f23456789012", + "label": "another-source-site", + "subscription_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "status": "provisioning", + "created_at": "2026-08-18T11:00:00Z", "_links": { "self": { - "href": "https://api.acquia.com/v3/identity-providers/123456ec-2354-4fb1-9298-637247eccc3b" - }, - "sso_policy": { - "href": "https://api.acquia.com/v3/identity-providers/123456ec-2354-4fb1-9298-637247eccc3b/policies/sso" + "href": "https://api.acquia.com/v3/source-sites/b2c3d4e5-f6a7-8901-bcde-f23456789012" } } } @@ -106513,110 +103844,114 @@ }, "security": [ { - "Federated_Authentication_API_BearerAuth": [] + "Source_Platform_API_BearerAuth": [] } ] } }, - "/identity-providers/{identityProviderId}": { + "/source-sites/{sourceSiteId}": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "summary": "Return details about a specific Identity Provider.", - "operationId": "findIdentityProviderByIdentityProviderId", - "tags": [ - "Identity Providers" - ], + "summary": "Retrieves a Source site by its ID", + "description": "Returns the details of a Source CMS site including its current provisioning status.\n", + "operationId": "findSourceSiteBySourceSiteId", + "x-acquia-operation": { + "provider": { + "service": "sites-aggregation-service" + } + }, "x-acquia-exposure": { + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "identity-providers:find" + "command": "source-sites:find" } - }, - "stability": "development", - "audience": [ - "public" - ] - }, - "x-acquia-operation": { - "provider": { - "service": "identity-service" } }, + "tags": [ + "Source Sites" + ], "parameters": [ { - "name": "identityProviderId", + "name": "sourceSiteId", "in": "path", "required": true, + "description": "Unique identifier for the Source site.", "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the identity provider." + "pattern": "^[a-zA-Z0-9-]+$", + "example": "f47ac10b-58cc-4372-a567-0e02b2c3d479" + } } ], "responses": { "200": { - "description": "OK", + "description": "Source site details", "content": { "application/hal+json": { "schema": { "allOf": [ { "type": "object", + "description": "A Source CMS site resource", "properties": { - "identity_provider_id": { + "id": { "type": "string", - "description": "Unique identifier for the identity provider." + "description": "The unique identifier of the Source site", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "f47ac10b-58cc-4372-a567-0e02b2c3d479" }, "label": { "type": "string", - "description": "The name of the Identity Provider." + "description": "The human-readable label of the site. Must contain only lowercase letters, numbers, hyphens, and spaces.", + "minLength": 4, + "maxLength": 21, + "pattern": "^[a-z0-9]([a-z0-9- ]*[a-z0-9])?$", + "example": "my-source-site" }, "subscription_id": { "type": "string", - "description": "Unique identifier for the subscription that the Identity Provider belongs to." - }, - "idp_entity_id": { - "type": "string", - "format": "uri", - "description": "The Identity Provider Entity ID." - }, - "sp_entity_id": { - "type": "string", - "format": "uri", - "description": "The Service Provider Entity ID." - }, - "sso_url": { - "type": "string", - "format": "uri", - "description": "The Single Sign-On URL for the Identity Provider." + "description": "The unique identifier of the subscription this site belongs to", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" }, - "certificate": { + "status": { "type": "string", - "description": "The X.509 certificate used for SAML authentication." + "description": "The current provisioning status of the site", + "enum": [ + "provisioning", + "ready", + "failed" + ], + "example": "ready" }, "created_at": { "type": "string", "format": "date-time", - "description": "Timestamp when the Identity Provider was created." + "description": "ISO 8601 datetime when the site was created", + "example": "2026-08-18T10:30:00Z" } }, "required": [ - "identity_provider_id", + "id", "label", "subscription_id", - "idp_entity_id", - "sp_entity_id", - "sso_url", - "certificate", + "status", "created_at" ] }, @@ -106757,58 +104092,157 @@ "required": [ "_links" ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "parent": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } } ] }, "example": { - "identity_provider_id": "908914ec-2354-4fb1-9298-637247eccc3a", - "label": "Acme Corporation Azure AD", - "subscription_id": "sub-123", - "idp_entity_id": "https://idp.acme.com/saml", - "sp_entity_id": "https://sp.acme.com/saml", - "sso_url": "https://acme.com/sso", - "certificate": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----", - "created_at": "2026-04-15T11:00:00Z", "_links": { "self": { - "href": "https://api.acquia.com/v3/identity-providers/908914ec-2354-4fb1-9298-637247eccc3a" + "href": "https://api.acquia.com/v3/source-sites/f47ac10b-58cc-4372-a567-0e02b2c3d479" }, - "sso_policy": { - "href": "https://api.acquia.com/v3/identity-providers/908914ec-2354-4fb1-9298-637247eccc3a/policies/sso" + "parent": { + "href": "https://api.acquia.com/v3/source-sites" } - } + }, + "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", + "label": "my-source-site", + "subscription_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "status": "ready", + "created_at": "2026-08-18T10:30:00Z" } } }, "links": { "self": { - "operationId": "findIdentityProviderByIdentityProviderId", - "parameters": { - "identityProviderId": "$response.body#/identity_provider_id" - } - }, - "update": { - "operationId": "updateIdentityProviderByIdentityProviderId", - "parameters": { - "identityProviderId": "$response.body#/identity_provider_id" - } - }, - "delete": { - "operationId": "deleteIdentityProviderByIdentityProviderId", - "parameters": { - "identityProviderId": "$response.body#/identity_provider_id" - } - }, - "enable_sso_policy": { - "operationId": "enableIdentityProviderSSOPolicyByIdentityProviderId", - "parameters": { - "identityProviderId": "$response.body#/identity_provider_id" - } - }, - "disable_sso_policy": { - "operationId": "disableIdentityProviderSSOPolicyByIdentityProviderId", + "operationId": "findSourceSiteBySourceSiteId", "parameters": { - "identityProviderId": "$response.body#/identity_provider_id" + "sourceSiteId": "$request.path.sourceSiteId" } } } @@ -107006,301 +104440,236 @@ }, "security": [ { - "Federated_Authentication_API_BearerAuth": [] + "Source_Platform_API_BearerAuth": [] } ] - }, - "put": { - "summary": "Updates an Identity Provider.", - "operationId": "updateIdentityProviderByIdentityProviderId", - "tags": [ - "Identity Providers" - ], - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "identity-providers:update" - } - }, - "stability": "development", - "audience": [ - "public" - ] - }, + } + }, + "/source-sites/{sourceSiteId}/config": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Retrieves a Source site's configuration as YAML", + "description": "Returns the active configuration of a Source CMS site in the `configuration`\nproperty, as a single YAML document.\n\nReading the configuration runs a task against the site, so the request is held\nopen until that task finishes (typical: a few seconds). The request fails (500)\nrather than returning a partial document or a 504, because it means something is\nvery wrong (a 504 would invite a retry, which likely would fail identically).\n\n**Permissions:** The authenticated user must have the `site admin` role on the site.\n", + "operationId": "findSourceSiteConfigBySourceSiteId", "x-acquia-operation": { "provider": { - "service": "identity-service" + "service": "sites-aggregation-service" + } + }, + "x-acquia-exposure": { + "stability": "prototype", + "audience": [ + "internal" + ], + "rateLimit": { + "requestsPerSecond": 5, + "burst": 2 + }, + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": false, + "command": "source-sites:find-config" + } } }, + "tags": [ + "Source Sites" + ], "parameters": [ { - "name": "identityProviderId", + "name": "sourceSiteId", "in": "path", "required": true, + "description": "Unique identifier for the Source site.", "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the identity provider." - } - ], - "requestBody": { - "description": "Request body for updating an existing Identity Provider.", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "label": { - "type": "string", - "description": "The name of the Identity Provider." - }, - "certificate": { - "type": "string", - "description": "The X.509 certificate used for SAML authentication." - }, - "sso_url": { - "type": "string", - "format": "uri", - "description": "The Single Sign-On URL for the Identity Provider." - }, - "idp_entity_id": { - "type": "string", - "format": "uri", - "description": "The Identity Provider Entity ID." - } - }, - "additionalProperties": false, - "minProperties": 1 - }, - "example": { - "label": "Updated Acme Corporation Azure AD", - "certificate": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----", - "sso_url": "https://updatedacme.com/sso", - "idp_entity_id": "https://idp2.acme.com/saml" - } + "pattern": "^[a-zA-Z0-9-]+$", + "example": "f47ac10b-58cc-4372-a567-0e02b2c3d479" } } - }, + ], "responses": { - "202": { - "description": "Identity Provider update initiated. The Identity Provider configuration changes are being applied. Poll the Identity Provider resource to verify the changes.", + "200": { + "description": "The active configuration of the site", "content": { "application/hal+json": { "schema": { "allOf": [ { - "allOf": [ - { + "type": "object", + "properties": { + "configuration": { + "type": "string", + "description": "The site's configuration as a single YAML document, keyed by config collection,\nthen config name. The default collection is the empty string; other collections\nare named after their language (for example `language.nl`).\n\nNothing bounds how large this is: a site's configuration is as big as it is. The\nwrite caps what it accepts at 1 MiB, so a site whose configuration exceeds that\ncan be read but not written back — a limit of the service, tracked as DXBE-97.\n\nThe document carries the UUID Source CMS holds for the site, in its\n`system.site` object. That UUID marks where the configuration came from, and an\nimport refuses a document whose UUID does not match the target site. It is not\nthe same identifier as `sourceSiteId`.\n", + "example": "'':\n system.site:\n name: 'My site'\n uuid: 7c1f0a94-5d3b-4e18-9a62-0b8d4c5e6f70\n node.type.article:\n name: Article\nlanguage.nl:\n node.type.article:\n name: Artikel\n" + } + }, + "required": [ + "configuration" + ] + }, + { + "type": "object", + "properties": { + "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "_links": { + "self": { "type": "object", - "description": "HAL links for the resource", + "description": "HAL link object", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "self" + "href" ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" }, - "required": [ - "href" - ], - "examples": [ + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - { + "_embedded": { "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] + "description": "Embedded resources (optional)", + "additionalProperties": {} } + }, + "required": [ + "_links" ] - }, - { - "type": "object", - "properties": { - "message": { - "const": "Identity Provider update has been accepted." - } - } } ] }, "example": { - "message": "Identity Provider update has been accepted.", "_links": { "self": { - "href": "https://api.acquia.com/v3/identity-providers/9078ead6-dfc9-4868-8800-723fb6da706f" + "href": "https://api.acquia.com/v3/source-sites/b2c3d4e5-f6a7-8901-bcde-f23456789012/config" } - } + }, + "configuration": "'':\n system.site:\n name: 'My site'\n uuid: 7c1f0a94-5d3b-4e18-9a62-0b8d4c5e6f70\n node.type.article:\n name: Article\nlanguage.nl:\n node.type.article:\n name: Artikel\n" } } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + }, + "links": { + "self": { + "operationId": "findSourceSiteConfigBySourceSiteId", + "parameters": { + "sourceSiteId": "$request.path.sourceSiteId" } } } @@ -107446,53 +104815,6 @@ } } }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, "500": { "description": "Internal Server Error", "content": { @@ -107545,51 +104867,125 @@ }, "security": [ { - "Federated_Authentication_API_BearerAuth": [] + "Source_Platform_API_BearerAuth": [] } ] }, - "delete": { - "summary": "Deletes an Identity Provider.", - "operationId": "deleteIdentityProviderByIdentityProviderId", - "tags": [ - "Identity Providers" - ], + "put": { + "summary": "Replaces a Source site's configuration", + "description": "Replaces the active configuration of a Source CMS site. Every request says in its\n`source` property where the replacement configuration is to be read from:\n\n- **`request`** — the configuration is the YAML document in the `configuration`\n property. Send back what this path's GET returned, edited or unchanged; a\n document larger than 1 MiB is refused with a 400.\n- **`github`** — the site reads the configuration from its own connected GitHub\n repository. Nothing is sent, so the body is just `{\"source\": \"github\"}`; sending a\n `configuration` alongside it is refused with a 400 rather than ignored.\n\nBoth do the same work from there on. Each starts one import, returns the same 202,\nand is read at `/source-sites/{sourceSiteId}/config/import`, whose own `source`\nproperty reports the value the request asked for.\n\nThis write is what starts an import. There is nothing to POST or PUT to\n`/source-sites/{sourceSiteId}/config/import`, which is read-only: naming the\nconfiguration the site should end up with keeps this resource's read and write on\none path, and the import that write creates is read at that other one.\n\nThis is an asynchronous operation. The endpoint returns immediately with a\n202 Accepted response, which means the import was accepted, not that it has\nbeen applied.\n\nThe response's `self` link points at\n`/source-sites/{sourceSiteId}/config/import`, which is where the import reports\nwhat it did — including a refusal, whether for a document whose site UUID does not\nmatch or for configuration the site rejects. Neither this response nor re-reading\nthis path says anything about the outcome. That read is cheap and safe to poll.\n\nA site may have only one configuration sync in progress at a time. A request for a\nsite that already has one is refused with a 409 straight away — the rule is checked\nbefore the document is read or applied and without touching the site, so a second\nrequest is rejected rather than queued, and nothing about the running import\nchanges. That running import can be read at\n`/source-sites/{sourceSiteId}/config/import`.\n\nA `github` request against a site with no connected GitHub repository is refused with\na 409 the same way, and for the same reason: there is nothing to read the\nconfiguration from, and that is known before the site is touched.\n\n**Permissions:** The authenticated user must have the `site admin` role on the site.\n", + "operationId": "saveSourceSiteConfigBySourceSiteId", + "x-acquia-operation": { + "provider": { + "service": "sites-aggregation-service" + } + }, "x-acquia-exposure": { + "stability": "prototype", + "audience": [ + "internal" + ], + "rateLimit": { + "requestsPerSecond": 1, + "burst": 2 + }, "channels": { "rest": { "enabled": true }, "cli": { - "enabled": true, - "command": "identity-providers:delete" + "enabled": false, + "command": "source-sites:update-config" } - }, - "stability": "development", - "audience": [ - "public" - ] - }, - "x-acquia-operation": { - "provider": { - "service": "identity-service" } }, + "tags": [ + "Source Sites" + ], "parameters": [ { - "name": "identityProviderId", + "name": "sourceSiteId", "in": "path", "required": true, + "description": "Unique identifier for the Source site.", "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the identity provider." + "pattern": "^[a-zA-Z0-9-]+$", + "example": "f47ac10b-58cc-4372-a567-0e02b2c3d479" + } } ], + "requestBody": { + "description": "Request body for replacing a Source site's configuration.\n\nEvery request names its `source` — where the replacement configuration is to be read\nfrom. The two sources take different bodies, so each is spelled out in full below.\n", + "required": true, + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "title": "From the request", + "description": "The configuration is the document in this request.", + "type": "object", + "properties": { + "source": { + "type": "string", + "const": "request", + "description": "Read the configuration from this request's `configuration` property." + }, + "configuration": { + "type": "string", + "minLength": 1, + "maxLength": 1048576, + "description": "The configuration to apply, as a single YAML document, keyed by\nconfig collection, then config name. The default collection is the\nempty string; other collections are named after their language (for\nexample `language.nl`).\n\nThe document must carry the UUID Source CMS holds for the site it\nwas exported from, in its `system.site` object. That UUID is checked\nagainst the target site before anything else, and the import is\nrefused if it does not match or is absent. It is not the same\nidentifier as `sourceSiteId`.\n" + } + }, + "required": [ + "source", + "configuration" + ], + "additionalProperties": false + }, + { + "title": "From GitHub", + "description": "The site reads the configuration from its own connected GitHub repository.\nNothing is sent, so there is no `configuration` property to send — including\none is refused with a 400 rather than silently ignored.\n", + "type": "object", + "properties": { + "source": { + "type": "string", + "const": "github", + "description": "Have the site read the configuration from its connected GitHub repository." + } + }, + "required": [ + "source" + ], + "additionalProperties": false + } + ] + }, + "examples": { + "from_request": { + "summary": "Replace the site's configuration with a document", + "description": "Applies the configuration a prior read of this path returned, with the article type's label changed.", + "value": { + "source": "request", + "configuration": "'':\n system.site:\n name: 'My site'\n uuid: 7c1f0a94-5d3b-4e18-9a62-0b8d4c5e6f70\n node.type.article:\n name: 'News article'\nlanguage.nl:\n node.type.article:\n name: Nieuwsartikel\n" + } + }, + "from_github": { + "summary": "Replace the site's configuration from GitHub", + "description": "The site reads the configuration itself. The whole body is the one property.", + "value": { + "source": "github" + } + } + } + } + } + }, "responses": { "202": { - "description": "Identity Provider deletion accepted. The Identity Provider is being deleted.", + "description": "Site configuration import accepted", "content": { "application/hal+json": { "schema": { @@ -107752,7 +105148,9 @@ "type": "object", "properties": { "message": { - "const": "Identity Provider deletion has been accepted." + "type": "string", + "const": "Site configuration import started.", + "description": "Confirmation message indicating the configuration import has been initiated" } } } @@ -107761,10 +105159,46 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/identity-providers/9078ead6-dfc9-4868-8800-723fb6da706f" + "href": "https://api.acquia.com/v3/source-sites/b2c3d4e5-f6a7-8901-bcde-f23456789012/config/import" } }, - "message": "Identity Provider deletion has been accepted." + "message": "Site configuration import started." + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } } } } @@ -108009,345 +105443,186 @@ }, "security": [ { - "Federated_Authentication_API_BearerAuth": [] + "Source_Platform_API_BearerAuth": [] } ] } }, - "/identity-providers/{identityProviderId}/policies/sso": { + "/source-sites/{sourceSiteId}/config/import": { "servers": [ { "url": "https://api.acquia.com/v3" } ], "get": { - "summary": "Get the SSO policy for an Identity Provider.", - "operationId": "findIdentityProviderSSOPolicyByIdentityProviderId", - "tags": [ - "Identity Providers" - ], + "summary": "Retrieves the state of a Source site's latest configuration import", + "description": "Returns the site's latest configuration import — the last one started — with its\nstatus, when it started and finished, and, for a refused import, every violation\nand the reason for it.\n\nThis path is read-only, and writing to it is not how an import is started. An\nimport is started by `PUT /source-sites/{sourceSiteId}/config`, whose `source`\nproperty names where the configuration is read from: `request` sends the document\nthe site should end up with, and `github` has the site read it from its own connected\nGitHub repository. The `source` property below reports the one this import\nused. Keeping both on that one path keeps the configuration's read and write\ntogether, so a caller can send back what the GET there returned. What that write\ncreates is read here, and its 202 response links here for exactly that reason.\n\nThis read does not touch the site, so a pipeline can poll it while an import runs.\nReading the configuration itself does run a task against the site; that is the GET\non `/source-sites/{sourceSiteId}/config`.\n\nOnly one import runs per site at a time, so a caller that has just started one is\nreading its own. A caller that waits a long time before reading may not be: a later\nimport becomes the site's latest, and nothing here distinguishes the two. Read it\nwhile the import you started is still running.\n\nA site that has never had an import responds 404, as does a site that does not\nexist.\n\nOnly imports are read here. Reading a site's configuration is synchronous — its\ncaller holds the request open and leaves with the document or an error — so there\nis nothing to poll for.\n\n**Permissions:** The authenticated user must have the `site admin` role on the site.\n", + "operationId": "findSourceSiteConfigImportBySourceSiteId", + "x-acquia-operation": { + "provider": { + "service": "sites-aggregation-service" + } + }, "x-acquia-exposure": { + "stability": "prototype", + "audience": [ + "internal" + ], + "rateLimit": { + "requestsPerSecond": 19, + "burst": 5 + }, "channels": { "rest": { "enabled": true }, "cli": { - "enabled": true, - "command": "identity-providers:find-sso-policy" + "enabled": false, + "command": "source-sites:find-config-import" } - }, - "stability": "development", - "audience": [ - "public" - ] - }, - "x-acquia-operation": { - "provider": { - "service": "identity-service" } }, + "tags": [ + "Source Sites" + ], "parameters": [ { - "name": "identityProviderId", + "name": "sourceSiteId", "in": "path", "required": true, + "description": "Unique identifier for the Source site.", "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the identity provider." + "pattern": "^[a-zA-Z0-9-]+$", + "example": "f47ac10b-58cc-4372-a567-0e02b2c3d479" + } } ], "responses": { "200": { - "description": "OK", + "description": "The site's latest configuration import", "content": { "application/hal+json": { "schema": { "allOf": [ { "type": "object", - "description": "SSO policy that enforces an Identity Provider for specific domains.", + "description": "A configuration import of a Source CMS site. At most one import runs per site at a\ntime, so the one worth reading is the site's latest: the last one started.\n", "properties": { + "id": { + "type": "string", + "description": "The unique identifier of this import, for logs and for support to trace it by.\nA caller cannot use it to confirm that the import it is reading is the one it\nstarted, because nothing hands the identifier back when an import is started.\n", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "d81f5c27-3a4b-4e69-8f10-2c7b9e5a1d34" + }, + "source": { + "type": "string", + "description": "Where the import read its configuration from — the same value the write that\nstarted it asked for.\n\n- `request` — the document sent in that write.\n- `github` — the site's connected GitHub repository, read by the site itself.\n", + "enum": [ + "request", + "github" + ], + "example": "request" + }, "status": { "type": "string", + "description": "Where the import got to.\n\n- `running` — accepted and not finished. It says nothing about the outcome: an import that has only just started can still end as any of the three below.\n- `succeeded` — the configuration was applied.\n- `refused` — nothing was applied, because the configuration was rejected. `violations` says what was wrong.\n- `failed` — the import began and could not finish; the site was returned to the state it held beforehand.\n", "enum": [ - "enabled", - "disabled" + "running", + "succeeded", + "refused", + "failed" ], - "default": "disabled", - "description": "The status of the SSO policy. When enabled, the policy enforces SSO for the specified domains. Defaults to disabled on creation." + "example": "refused" }, - "_embedded": { - "type": "object", - "description": "Embedded resources for the SSO policy.", - "properties": { - "domains": { - "type": "array", - "description": "The SSO domains enforced by this policy, each with a self link back to the authoritative SsoDomain resource.", - "items": { - "allOf": [ - { - "type": "object", - "properties": { - "domain_id": { - "type": "string", - "description": "Unique identifier for the domain." - }, - "domain": { - "type": "string", - "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z]{2,})+$", - "description": "The domain name (e.g., \"acme.com\")." - }, - "subscription_id": { - "type": "string", - "description": "Unique identifier for the subscription that the domain belongs to." - }, - "health": { - "type": "object", - "description": "The overall verification health of the domain. Uses the same code semantics as the platform email domain-verification system: `200` verified, `202` verification pending or in progress, `404` DNS record not found or could not be validated.", - "properties": { - "code": { - "type": "string", - "enum": [ - "200", - "202", - "404" - ], - "description": "Machine-readable verification status code. `200` — verified. `202` — verification pending or in progress; retry after propagation. `404` — DNS TXT record not found or does not match expected value." - }, - "summary": { - "type": "string", - "description": "Short human-readable label for the verification state (e.g., \"Verified\", \"Verification pending\", \"Missing DNS record\")." - }, - "details": { - "type": "string", - "description": "Actionable explanation of the current state. For `404`, describes what was checked and what the customer should do next." - } - }, - "required": [ - "code", - "summary", - "details" - ] - }, - "verification_record": { - "type": "object", - "description": "DNS TXT record the customer must publish to verify domain ownership.", - "properties": { - "type": { - "type": "string", - "const": "TXT", - "description": "DNS record type." - }, - "host": { - "type": "string", - "description": "DNS record host name." - }, - "value": { - "type": "string", - "description": "Expected DNS record value." - }, - "health": { - "type": "object", - "description": "Verification health specific to this DNS record. Anchors the failure reason to the exact record the customer needs to fix, matching the per-record health pattern used in platform email domain verification.", - "properties": { - "code": { - "type": "string", - "enum": [ - "200", - "202", - "404" - ], - "description": "`200` — record found and value matches. `202` — check in progress. `404` — record not found or value does not match." - }, - "summary": { - "type": "string", - "description": "Short human-readable label for this record's verification state." - }, - "details": { - "type": "string", - "description": "Actionable explanation; for `404`, states what was checked and what to fix." - } - }, - "required": [ - "code", - "summary", - "details" - ] - } - }, - "required": [ - "type", - "host", - "value", - "health" - ] - }, - "verified_at": { - "type": "string", - "format": "date-time", - "description": "Timestamp when the domain was successfully verified. Present only when `health.code` is `200`." - } - }, - "required": [ - "domain_id", - "domain", - "subscription_id", - "health", - "verification_record" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] + "started_at": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 datetime when the import was accepted", + "example": "2026-09-09T10:30:00Z" + }, + "finished_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "ISO 8601 datetime when the import reached its final status, or null while it is running", + "example": "2026-09-09T10:32:41Z" + }, + "violations": { + "type": "array", + "description": "Why a refused import was refused. Every violation the site found is listed, not\nonly the first, and one configuration object may appear more than once when it\nbroke more than one rule. Absent unless the status is `refused`.\n", + "items": { + "type": "object", + "properties": { + "collection": { + "type": "string", + "description": "Which configuration the rejected object belongs to:\n`language.` for a translation override, absent for the\nsite's own configuration. An object and its translations are separate\nobjects, and each can be rejected on its own.\n", + "example": "language.es" + }, + "config": { + "type": [ + "string", + "null" + ], + "description": "The configuration object that was rejected. Null for the one violation\nthat is about the document as a whole rather than one object: a site\nUUID that does not match the target.\n", + "example": "node.type.article" + }, + "path": { + "type": "string", + "description": "Which property within the rejected object failed, as a dotted path.\nThe empty string when the violation is about the whole object rather\nthan one property within it. Absent only when `config` is null, which\nhas no object to point into.\n", + "example": "name" + }, + "code": { + "type": "string", + "description": "Names the rule that rejected it, so a caller can recognise a kind of\nfailure without reading the message. Each code is stable once it\nappears, but the set is not closed: the site adds one whenever it adds\na validation rule, and it is not enumerated here for that reason. Treat\nan unrecognised code as opaque and fall back to the message.\n", + "example": "config_schema" + }, + "message": { + "type": "string", + "description": "Plain-language reason, naming what would have gone wrong had the import been applied." } - } + }, + "required": [ + "config", + "code", + "message" + ] }, - "required": [ - "domains" + "example": [ + { + "config": "node.type.article", + "path": "", + "code": "delete_has_content", + "message": "Deleting this node type would delete 42 nodes. Delete the content first." + }, + { + "collection": "language.es", + "config": "node.type.article", + "path": "name", + "code": "config_schema", + "message": "The Spanish translation override sets 'name' to a list, but it expects a string." + }, + { + "config": "user.role.administrator", + "path": "", + "code": "system_role", + "message": "System roles cannot be changed by a configuration sync." + }, + { + "config": null, + "code": "site_uuid_mismatch", + "message": "This configuration was exported from a different site." + } ] } }, "required": [ + "id", + "source", "status", - "_embedded" + "started_at" ] }, { @@ -108491,74 +105766,40 @@ ] }, "example": { - "status": "disabled", "_links": { "self": { - "href": "https://api.acquia.com/v3/identity-providers/9078ead6-dfc9-4868-8800-723fb6da706f/policies/sso" + "href": "https://api.acquia.com/v3/source-sites/b2c3d4e5-f6a7-8901-bcde-f23456789012/config/import" } }, - "_embedded": { - "domains": [ - { - "domain_id": "dom-456", - "domain": "acme.com", - "subscription_id": "sub-123", - "health": { - "code": "200", - "summary": "Verified", - "details": "The DNS TXT record has been confirmed and the domain is verified." - }, - "verification_record": { - "type": "TXT", - "host": "_acquia-challenge.acme.com", - "value": "abc123def456", - "health": { - "code": "200", - "summary": "Verified", - "details": "The TXT record at _acquia-challenge.acme.com matches the expected value." - } - }, - "verified_at": "2026-04-15T10:30:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sso-domains/dom-456" - }, - "identity_providers": { - "href": "https://api.acquia.com/v3/identity-providers?filter=domain_id%3Ddom-456" - } - } - }, - { - "domain_id": "dom-789", - "domain": "acme.corp", - "subscription_id": "sub-123", - "health": { - "code": "200", - "summary": "Verified", - "details": "The DNS TXT record has been confirmed and the domain is verified." - }, - "verification_record": { - "type": "TXT", - "host": "_acquia-challenge.acme.corp", - "value": "xyz789abc123", - "health": { - "code": "200", - "summary": "Verified", - "details": "The TXT record at _acquia-challenge.acme.corp matches the expected value." - } - }, - "verified_at": "2026-04-20T09:00:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sso-domains/dom-789" - }, - "identity_providers": { - "href": "https://api.acquia.com/v3/identity-providers?filter=domain_id%3Ddom-789" - } - } - } - ] - } + "id": "d81f5c27-3a4b-4e69-8f10-2c7b9e5a1d34", + "source": "request", + "status": "refused", + "started_at": "2026-09-09T10:30:00Z", + "finished_at": "2026-09-09T10:32:41Z", + "violations": [ + { + "collection": "", + "config": "node.type.article", + "path": "", + "code": "delete_has_content", + "message": "Deleting this node type would delete 42 nodes. Delete the content first." + }, + { + "collection": "language.es", + "config": "node.type.article", + "path": "name", + "code": "config_schema", + "message": "The Spanish translation override sets 'name' to a list, but it expects a string." + } + ] + } + } + }, + "links": { + "self": { + "operationId": "findSourceSiteConfigImportBySourceSiteId", + "parameters": { + "sourceSiteId": "$request.path.sourceSiteId" } } } @@ -108756,82 +105997,106 @@ }, "security": [ { - "Federated_Authentication_API_BearerAuth": [] + "Source_Platform_API_BearerAuth": [] } ] - }, + } + }, + "/source-sites/{sourceSiteId}/actions/clone": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], "post": { - "summary": "Create the SSO policy for an Identity Provider.", - "operationId": "createIdentityProviderSSOPolicyByIdentityProviderId", - "tags": [ - "Identity Providers" - ], + "summary": "Clone a Source site", + "description": "Creates a clone of an existing Source CMS site. The cloned site will be created in the\nspecified target subscription with a new label. Site configuration, components, and\nstructure are replicated to the new site.\n\nThis is an asynchronous operation. The endpoint returns immediately with a 202 Accepted\nresponse.\n\n**Permissions:** The authenticated user must have admin access to the source site and\nthe ability to create sites in the target subscription.\n", + "operationId": "cloneSourceSiteBySourceSiteId", + "x-acquia-operation": { + "provider": { + "service": "sites-aggregation-service" + } + }, "x-acquia-exposure": { + "stability": "development", + "audience": [ + "public" + ], + "rateLimit": { + "requestsPerSecond": 5, + "burst": 2 + }, "channels": { "rest": { "enabled": true }, "cli": { "enabled": true, - "command": "identity-providers:create-sso-policy" + "command": "source-sites:clone" } - }, - "stability": "development", - "audience": [ - "public" - ] - }, - "x-acquia-operation": { - "provider": { - "service": "identity-service" } }, + "tags": [ + "Source Sites" + ], "parameters": [ { - "name": "identityProviderId", + "name": "sourceSiteId", "in": "path", "required": true, + "description": "Unique identifier for the Source site.", "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the identity provider." + "pattern": "^[a-zA-Z0-9-]+$", + "example": "f47ac10b-58cc-4372-a567-0e02b2c3d479" + } } ], "requestBody": { - "description": "Request body for creating an SSO policy for an Identity Provider.", + "description": "Request body for cloning a Source site", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { - "domain_ids": { - "type": "array", - "description": "List of verified domain IDs to enforce this Identity Provider for.", - "items": { - "type": "string", - "description": "Reference to a verified SSO domain." - } + "subscription_id": { + "type": "string", + "format": "uuid", + "description": "The UUID of the target subscription where the cloned site will be created. Must be a subscription the authenticated user has access to.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "label": { + "type": "string", + "description": "The human-readable label for the cloned site. Must start with a lowercase letter or number and can contain lowercase letters, numbers, hyphens, and spaces.", + "minLength": 4, + "maxLength": 21, + "pattern": "^[a-z0-9]([a-z0-9- ]*[a-z0-9])?$", + "example": "my-cloned-site" } }, "required": [ - "domain_ids" + "subscription_id", + "label" ], "additionalProperties": false }, - "example": { - "domain_ids": [ - "dom-456", - "dom-789" - ] + "examples": { + "clone_site": { + "summary": "Clone a site to a subscription", + "description": "Creates a clone of the source site in the specified subscription with the given label.", + "value": { + "subscription_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "label": "marketing-site-clone" + } + } } } } }, "responses": { "202": { - "description": "SSO policy creation initiated. The policy is being activated. Poll the SSO policy resource to verify activation.", + "description": "Site clone operation accepted", "content": { "application/hal+json": { "schema": { @@ -108994,7 +106259,9 @@ "type": "object", "properties": { "message": { - "const": "SSO policy creation has been accepted." + "type": "string", + "const": "Site clone operation started.", + "description": "Confirmation message indicating the clone operation has been initiated" } } } @@ -109003,10 +106270,10 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/identity-providers/9078ead6-dfc9-4868-8800-723fb6da706f/policies/sso" + "href": "https://api.acquia.com/v3/source-sites/b2c3d4e5-f6a7-8901-bcde-f23456789012" } }, - "message": "SSO policy creation has been accepted." + "message": "Site clone operation started." } } } @@ -109287,16 +106554,20 @@ }, "security": [ { - "Federated_Authentication_API_BearerAuth": [] + "Source_Platform_API_BearerAuth": [] } ] - }, - "put": { - "summary": "Update the SSO policy for an Identity Provider.", - "operationId": "updateIdentityProviderSSOPolicyByIdentityProviderId", - "tags": [ - "Identity Providers" - ], + } + }, + "/failover-groups": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Retrieves a collection of failover groups.", + "operationId": "getFailoverGroups", "x-acquia-exposure": { "channels": { "rest": { @@ -109304,7 +106575,7 @@ }, "cli": { "enabled": true, - "command": "identity-providers:update-sso-policy" + "command": "failover-groups:list" } }, "stability": "development", @@ -109314,55 +106585,51 @@ }, "x-acquia-operation": { "provider": { - "service": "identity-service" + "service": "failover-service" } }, + "tags": [ + "Failover Groups" + ], + "description": "Retrieves a collection of failover groups. Use the `filter` parameter to scope results by source environment.\n\nFilter syntax:\n- By source environment: `filter=environment_id:`\n", "parameters": [ { - "name": "identityProviderId", - "in": "path", - "required": true, + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, "schema": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" }, - "description": "Unique identifier for the identity provider." + "example": "status=active;type=standard" } ], - "requestBody": { - "description": "Request body for updating an SSO policy for an Identity Provider.", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "domain_ids": { - "type": "array", - "description": "List of verified domain IDs to enforce this Identity Provider for.", - "items": { - "type": "string", - "description": "Reference to a verified SSO domain." - } - } - }, - "required": [ - "domain_ids" - ], - "additionalProperties": false, - "minProperties": 1 - }, - "example": { - "domain_ids": [ - "dom-456" - ] - } - } - } - }, "responses": { - "202": { - "description": "SSO policy update initiated. The policy changes are being applied. Poll the SSO policy resource to verify the changes.", + "200": { + "description": "OK", "content": { "application/hal+json": { "schema": { @@ -109510,375 +106777,264 @@ { "type": "object", "properties": { - "message": { - "type": "string", - "description": "The message content" + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] } }, "required": [ - "message" + "_embedded" ] } ] }, - { - "type": "object", - "properties": { - "message": { - "const": "SSO policy update has been accepted." - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/identity-providers/9078ead6-dfc9-4868-8800-723fb6da706f/policies/sso" - } - }, - "message": "SSO policy update has been accepted." - } - } - } - }, - "400": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - } - }, - "security": [ - { - "Federated_Authentication_API_BearerAuth": [] - } - ] - }, - "delete": { - "summary": "Delete the SSO policy for an Identity Provider.", - "operationId": "deleteIdentityProviderSSOPolicyByIdentityProviderId", - "tags": [ - "Identity Providers" - ], - "x-acquia-exposure": { - "channels": { - "rest": { - "enabled": true - }, - "cli": { - "enabled": true, - "command": "identity-providers:delete-sso-policy" - } - }, - "stability": "development", - "audience": [ - "public" - ] - }, - "x-acquia-operation": { - "provider": { - "service": "identity-service" - } - }, - "parameters": [ - { - "name": "identityProviderId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the identity provider." - } - ], - "responses": { - "202": { - "description": "SSO policy deletion initiated. The policy is being deactivated. Poll the Identity Provider resource to verify the policy has been removed.", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ { "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, { "type": "object", "properties": { "_links": { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", "type": "object", - "description": "HAL link object", "properties": { "href": { "type": "string", @@ -109933,11 +107089,162 @@ "templated": true } ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" } }, - "required": [ - "self" - ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -109997,147 +107304,894 @@ ] } }, - "_embedded": { + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] } }, "required": [ - "_links" + "count", + "total", + "pagination" ] - }, + } + ], + "examples": [ { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true } }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "const": "SSO policy deletion has been accepted." - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/identity-providers/9078ead6-dfc9-4868-8800-723fb6da706f/policies/sso" - } - }, - "message": "SSO policy deletion has been accepted." - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + } + ] + }, { - "type": "object", - "properties": { - "error": { - "type": "string" + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] }, - "message": { - "type": "string" + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } } - }, - "required": [ - "error", - "message" ] }, { "type": "object", "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." + "_embedded": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique identifier for the failover group.", + "example": "b2c3d4e5-f6a7-8901-bcde-f12345678901" + }, + "name": { + "type": "string", + "description": "The name of the failover group.", + "example": "Primary Failover Group" + }, + "status": { + "type": "string", + "enum": [ + "creating", + "normal", + "failed-over", + "failing-over", + "error", + "deleting", + "deleted" + ], + "description": "The current status of the failover group.", + "example": "normal" + }, + "pairs": { + "type": "array", + "description": "The list of failover pairs belonging to this failover group.", + "items": { + "type": "object", + "properties": { + "service_name": { + "type": "string", + "description": "The name of the service for this failover pair.", + "example": "my-application-service" + }, + "primary_id": { + "type": "string", + "description": "The ID of the primary resource in the failover pair.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "failover_id": { + "type": "string", + "description": "The UUID of the failover resource in the failover pair.", + "example": "f1e2d3c4-b5a6-7890-fedc-ba9876543210" + } + }, + "required": [ + "service_name", + "primary_id", + "failover_id" + ] + } + } + }, + "required": [ + "id", + "name", + "status", + "pairs" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + }, + "required": [ + "items" + ] } }, "required": [ - "error", - "message" + "_embedded" ] } ] }, + "examples": { + "failover_group_collection": { + "summary": "Failover group collection with pagination", + "value": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/failover-groups?limit=2&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/failover-groups?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/failover-groups?limit=2{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/failover-groups?limit=2&offset=0{&filter}", + "templated": true + } + }, + "count": 1, + "total": 1, + "pagination": { + "total": 1, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", + "name": "Primary Failover Group", + "status": "normal", + "pairs": [ + { + "service_name": "my-application-service", + "primary_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "failover_id": "f1e2d3c4-b5a6-7890-fedc-ba9876543210" + } + ], + "_links": { + "self": { + "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + } + } + } + ] + } + } + } + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } } } } }, - "404": { - "description": "Not Found", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { @@ -110162,11 +108216,11 @@ "properties": { "error": { "type": "string", - "const": "not_found" + "const": "unauthorized" }, "message": { "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." + "const": "You do not have permission to access this resource." } }, "required": [ @@ -110177,14 +108231,14 @@ ] }, "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." + "error": "unauthorized", + "message": "You do not have permission to access this resource." } } } }, - "409": { - "description": "Conflict", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -110209,11 +108263,11 @@ "properties": { "error": { "type": "string", - "const": "conflict" + "const": "forbidden" }, "message": { "type": "string", - "example": "The requested operation is invalid or cannot be completed." + "example": "You do not have permission to perform this action." } }, "required": [ @@ -110224,8 +108278,8 @@ ] }, "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." + "error": "forbidden", + "message": "You do not have permission to perform this action." } } } @@ -110282,23 +108336,13 @@ }, "security": [ { - "Federated_Authentication_API_BearerAuth": [] + "Failover_Service_API_BearerAuth": [] } ] - } - }, - "/identity-providers/{identityProviderId}/policies/sso/actions/enable": { - "servers": [ - { - "url": "https://api.acquia.com/v3" - } - ], + }, "post": { - "summary": "Enable the SSO policy for an Identity Provider.", - "operationId": "enableIdentityProviderSSOPolicyByIdentityProviderId", - "tags": [ - "Identity Providers" - ], + "summary": "Creates a new failover group.", + "operationId": "createFailoverGroup", "x-acquia-exposure": { "channels": { "rest": { @@ -110306,7 +108350,7 @@ }, "cli": { "enabled": true, - "command": "identity-providers:enable-sso-policy" + "command": "failover-groups:create" } }, "stability": "development", @@ -110316,24 +108360,45 @@ }, "x-acquia-operation": { "provider": { - "service": "identity-service" + "service": "failover-service" } }, - "parameters": [ - { - "name": "identityProviderId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the identity provider." - } + "tags": [ + "Failover Groups" ], + "requestBody": { + "description": "Create failover group request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the failover group.", + "example": "Primary Failover Group" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "examples": { + "create": { + "summary": "Creates a new failover group", + "description": "Creates a new failover group with the specified name", + "value": { + "name": "Primary Failover Group" + } + } + } + } + } + }, "responses": { "202": { - "description": "SSO policy enablement initiated. The policy is being enabled and will enforce domains. Poll the SSO policy resource to verify the status change.", + "description": "Failover group creation initiated", "content": { "application/hal+json": { "schema": { @@ -110496,7 +108561,9 @@ "type": "object", "properties": { "message": { - "const": "SSO policy enablement has been accepted." + "type": "string", + "const": "Failover group creation has been initiated.", + "description": "Confirmation message that the failover group creation has been initiated." } } } @@ -110505,63 +108572,52 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/identity-providers/9078ead6-dfc9-4868-8800-723fb6da706f/policies/sso" + "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" } }, - "message": "SSO policy enablement has been accepted." + "message": "Failover group creation has been initiated." } } } }, - "401": { - "description": "Unauthorized", + "400": { + "description": "Validation Error", "content": { "application/json": { "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] + "type": "object", + "properties": { + "error": { + "type": "string" }, - { + "message": { "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } + "additionalProperties": { + "type": "string" }, - "required": [ - "error", - "message" - ] + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } } + }, + "required": [ + "error", + "message" ] }, "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } } } } }, - "403": { - "description": "Forbidden", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { @@ -110586,11 +108642,11 @@ "properties": { "error": { "type": "string", - "const": "forbidden" + "const": "unauthorized" }, "message": { "type": "string", - "example": "You do not have permission to perform this action." + "const": "You do not have permission to access this resource." } }, "required": [ @@ -110601,14 +108657,14 @@ ] }, "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." + "error": "unauthorized", + "message": "You do not have permission to access this resource." } } } }, - "404": { - "description": "Not Found", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -110633,11 +108689,11 @@ "properties": { "error": { "type": "string", - "const": "not_found" + "const": "forbidden" }, "message": { "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." + "example": "You do not have permission to perform this action." } }, "required": [ @@ -110648,8 +108704,8 @@ ] }, "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." + "error": "forbidden", + "message": "You do not have permission to perform this action." } } } @@ -110753,23 +108809,20 @@ }, "security": [ { - "Federated_Authentication_API_BearerAuth": [] + "Failover_Service_API_BearerAuth": [] } ] } }, - "/identity-providers/{identityProviderId}/policies/sso/actions/disable": { + "/failover-groups/{failoverGroupId}": { "servers": [ { "url": "https://api.acquia.com/v3" } ], - "post": { - "summary": "Disable the SSO policy for an Identity Provider.", - "operationId": "disableIdentityProviderSSOPolicyByIdentityProviderId", - "tags": [ - "Identity Providers" - ], + "get": { + "summary": "Retrieves a failover group by ID.", + "operationId": "findFailoverGroupByFailoverGroupId", "x-acquia-exposure": { "channels": { "rest": { @@ -110777,7 +108830,7 @@ }, "cli": { "enabled": true, - "command": "identity-providers:disable-sso-policy" + "command": "failover-groups:find" } }, "stability": "development", @@ -110787,43 +108840,520 @@ }, "x-acquia-operation": { "provider": { - "service": "identity-service" + "service": "failover-service" } }, + "tags": [ + "Failover Groups" + ], "parameters": [ { - "name": "identityProviderId", + "name": "failoverGroupId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$" }, - "description": "Unique identifier for the identity provider." + "description": "Unique identifier for the failover group." } ], "responses": { - "202": { - "description": "SSO policy disablement initiated. The policy is being disabled and will no longer enforce domains. Poll the SSO policy resource to verify the status change.", + "200": { + "description": "OK", "content": { "application/hal+json": { "schema": { "allOf": [ { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique identifier for the failover group.", + "example": "b2c3d4e5-f6a7-8901-bcde-f12345678901" + }, + "name": { + "type": "string", + "description": "The name of the failover group.", + "example": "Primary Failover Group" + }, + "status": { + "type": "string", + "enum": [ + "creating", + "normal", + "failed-over", + "failing-over", + "error", + "deleting", + "deleted" + ], + "description": "The current status of the failover group.", + "example": "normal" + }, + "pairs": { + "type": "array", + "description": "The list of failover pairs belonging to this failover group.", + "items": { + "type": "object", + "properties": { + "service_name": { + "type": "string", + "description": "The name of the service for this failover pair.", + "example": "my-application-service" + }, + "primary_id": { + "type": "string", + "description": "The ID of the primary resource in the failover pair.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "failover_id": { + "type": "string", + "description": "The UUID of the failover resource in the failover pair.", + "example": "f1e2d3c4-b5a6-7890-fedc-ba9876543210" + } + }, + "required": [ + "service_name", + "primary_id", + "failover_id" + ] + } + } + }, + "required": [ + "id", + "name", + "status", + "pairs" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", + "name": "Primary Failover Group", + "status": "normal", + "pairs": [ + { + "service_name": "my-application-service", + "primary_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "failover_id": "f1e2d3c4-b5a6-7890-fedc-ba9876543210" + } + ], + "_links": { + "self": { + "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + } + } + } + } + }, + "links": { + "self": { + "operationId": "findFailoverGroupByFailoverGroupId", + "parameters": { + "failoverGroupId": "$request.path.failoverGroupId" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Failover_Service_API_BearerAuth": [] + } + ] + }, + "delete": { + "summary": "Deletes a failover group by ID.", + "operationId": "deleteFailoverGroupByFailoverGroupId", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "failover-groups:delete" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "failover-service" + } + }, + "tags": [ + "Failover Groups" + ], + "parameters": [ + { + "name": "failoverGroupId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the failover group." + } + ], + "responses": { + "202": { + "description": "Failover group deletion initiated", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", "anyOf": [ { "format": "uri" @@ -110967,7 +109497,9 @@ "type": "object", "properties": { "message": { - "const": "SSO policy disablement has been accepted." + "type": "string", + "const": "Failover group deletion has been initiated.", + "description": "Confirmation message that the failover group deletion has been initiated." } } } @@ -110976,10 +109508,10 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/identity-providers/9078ead6-dfc9-4868-8800-723fb6da706f/policies/sso" + "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" } }, - "message": "SSO policy disablement has been accepted." + "message": "Failover group deletion has been initiated." } } } @@ -111224,870 +109756,534 @@ }, "security": [ { - "Federated_Authentication_API_BearerAuth": [] + "Failover_Service_API_BearerAuth": [] } ] } - } - }, - "components": { - "responses": { - "API_Specs_API_InternalServerError": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "required": [ - "error", - "message" - ], - "properties": { - "error": { - "type": "string", - "description": "The error summary." - }, - "message": { - "type": "string", - "description": "The long description for the returned error." - } - } - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] + }, + "/failover-groups/{failoverGroupId}/actions/failover": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "post": { + "summary": "Initiates failover for a failover group.", + "operationId": "failoverFailoverGroupByFailoverGroupId", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + "cli": { + "enabled": true, + "command": "failover-groups:failover" } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "failover-service" } - } - }, - "Site_Service_API_ForbiddenError": { - "description": "Forbidden", - "content": { - "application/json": { + }, + "tags": [ + "Failover Groups" + ], + "parameters": [ + { + "name": "failoverGroupId", + "in": "path", + "required": true, "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the failover group." + } + ], + "responses": { + "202": { + "description": "Failover group failover initiated", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] }, - "message": { - "type": "string" + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Failover group failover initiated.", + "description": "Confirmation message that the failover group failover has been initiated." + } + } } - }, - "required": [ - "error", - "message" ] }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" } }, - "required": [ - "error", - "message" - ] + "message": "Failover group failover initiated." } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." + } } - } - } - }, - "Site_Service_API_InternalServerError": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] }, - "message": { - "type": "string" + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] } - }, - "required": [ - "error", - "message" ] }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } } - } - } - }, - "Site_Service_API_InvalidOperationError": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] }, - "message": { - "type": "string" + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] } - }, - "required": [ - "error", - "message" ] }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." + } } - } - } - }, - "Site_Service_API_NotFoundError": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] }, - "message": { - "type": "string" + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] } - }, - "required": [ - "error", - "message" ] }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "Site_Service_API_UnauthorizedError": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "Site_Service_API_ValidationError": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." } - }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." } } - } - } - }, - "Site_Service_API_Site": { - "description": "Site details", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "description": "A Site resource", - "properties": { - "id": { - "type": "string", - "description": "The unique identifier of the site", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "12345678-1234-1234-1234-123456789012" - }, - "name": { - "type": "string", - "description": "The machine name of the site. Must start with a lowercase letter and contain only lowercase letters and numbers.", - "minLength": 1, - "maxLength": 14, - "pattern": "^[a-z][a-z0-9]*$", - "example": "mysite" - }, - "label": { - "type": "string", - "description": "The human-readable label of the site", - "minLength": 1, - "maxLength": 50, - "example": "My Site 1" - }, - "description": { - "type": "string", - "description": "A description of the site", - "maxLength": 512, - "example": "A production site for the marketing team." - }, - "codebase_id": { - "type": "string", - "description": "The unique identifier of the codebase this site belongs to", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "550e8400-e29b-41d4-a716-446655441210" - }, - "status": { - "type": "string", - "description": "The current lifecycle status of the site. ready indicates the site is active and operational. marked-for-deletion indicates the site has been scheduled for deletion and can still be recovered.\n", - "enum": [ - "ready", - "marked-for-deletion" - ], - "example": "ready" - }, - "delete_at": { - "type": "string", - "format": "date-time", - "description": "ISO 8601 datetime indicating when the site is scheduled for deletion. Only present when status is marked-for-deletion.", - "example": "2025-06-15T00:00:00Z" - } - }, - "required": [ - "id", - "name", - "label", - "codebase_id", - "status" - ] - }, - { - "type": "object", - "properties": { - "_links": { + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "error": { + "type": "string" + }, + "message": { + "type": "string" } }, "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "error", + "message" + ] }, - "_embedded": { + { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_links": { "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "error": { + "type": "string", + "const": "conflict" }, - "codebase": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." } - } + }, + "required": [ + "error", + "message" + ] } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sites/f1a2b3c4-d5e6-7890-abcd-ef1234567890" + ] }, - "codebase": { - "href": "https://api.acquia.com/v3/codebases/a9b8c7d6-e5f4-3210-abcd-ef9876543210" + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." } - }, - "id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890", - "name": "mysite", - "label": "My Site", - "description": "This is a description of my site.", - "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", - "status": "ready" - } - } - }, - "links": { - "self": { - "operationId": "findSiteBySiteId", - "parameters": { - "siteId": "$request.path.siteId" + } } - } - } - }, - "Site_Service_API_SiteCollection": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { "allOf": [ { "type": "object", "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "error": { + "type": "string" }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "message": { + "type": "string" } }, "required": [ - "_links" + "error", + "message" ] }, { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." } }, "required": [ - "_embedded" + "error", + "message" ] } ] }, - { + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Failover_Service_API_BearerAuth": [] + } + ] + } + }, + "/failover-groups/{failoverGroupId}/actions/revert-failover": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "post": { + "summary": "Initiates a revert failover for a failover group.", + "operationId": "revertFailoverFailoverGroupByFailoverGroupId", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "failover-groups:revert-failover" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "failover-service" + } + }, + "tags": [ + "Failover Groups" + ], + "parameters": [ + { + "name": "failoverGroupId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the failover group." + } + ], + "responses": { + "202": { + "description": "Failover group revert failover initiated", + "content": { + "application/hal+json": { + "schema": { "allOf": [ { "allOf": [ @@ -112232,25 +110428,13 @@ { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "_embedded" + "message" ] } ] @@ -112258,525 +110442,321 @@ { "type": "object", "properties": { - "_links": { - "type": "object", - "properties": { - "prev": { - "description": "Link to the previous page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "next": { - "description": "Link to the next page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "offset": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for offset" - }, - "limit": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for limit" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "count": { - "type": "integer", - "description": "The number of items in the current page" + "message": { + "type": "string", + "const": "Failover group revert failover initiated.", + "description": "Confirmation message that the failover group revert failover has been initiated." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + } + }, + "message": "Failover group revert failover initiated." + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "total": { - "type": "integer", - "description": "The total number of items available" + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" }, - "pagination": { - "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" - } - }, - "required": [ - "total", - "limit", - "offset" - ] + "message": { + "type": "string", + "const": "You do not have permission to access this resource." } }, "required": [ - "count", - "total", - "pagination" + "error", + "message" ] } - ], - "examples": [ + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "type": "object", + "properties": { + "error": { + "type": "string" }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "message": { + "type": "string" } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "required": [ + "error", + "message" + ] }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "required": [ + "error", + "message" + ] }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "message": { + "type": "string" } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "required": [ + "error", + "message" + ] } ] }, - { + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Failover_Service_API_BearerAuth": [] + } + ] + } + }, + "/failover-groups/{failoverGroupId}/actions/sync": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "post": { + "summary": "Initiates a sync for a failover group.", + "operationId": "syncFailoverGroupByFailoverGroupId", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "failover-groups:sync" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "failover-service" + } + }, + "tags": [ + "Failover Groups" + ], + "parameters": [ + { + "name": "failoverGroupId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the failover group." + } + ], + "responses": { + "202": { + "description": "Failover group sync initiated", + "content": { + "application/hal+json": { + "schema": { "allOf": [ { "allOf": [ @@ -112921,113 +110901,425 @@ { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "_embedded" + "message" ] } ] }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Failover group sync initiated.", + "description": "Confirmation message that the failover group sync has been initiated." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + } + }, + "message": "Failover group sync initiated." + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Failover_Service_API_BearerAuth": [] + } + ] + } + }, + "/environments/{environmentId}/multi-region-failover": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Retrieves the multi-region failover status for an environment.", + "operationId": "findMultiRegionFailoverByEnvironmentId", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "environments:find-multi-region-failover" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "failover-service" + } + }, + "tags": [ + "Environments" + ], + "parameters": [ + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "is_enabled": { + "type": "boolean", + "description": "Whether multi-region failover is enabled for the environment." + }, + "failover_group_id": { + "type": "string", + "description": "The identifier of the failover group associated with the environment." + }, + "is_traffic_failed_over": { + "type": "boolean", + "description": "Whether traffic has been failed over to the secondary region." + } + }, + "required": [ + "is_enabled" + ] + }, { "type": "object", "properties": { "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "filter": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } + }, + "required": [ + "href" ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } }, + "required": [ + "self" + ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -113086,80 +111378,312 @@ } ] } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + "required": [ + "_links" + ] + } + ] + }, + "example": { + "is_enabled": true, + "failover_group_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", + "is_traffic_failed_over": false, + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/a1b2c3d4-e5f6-7890-abcd-ef1234567890/multi-region-failover" + } + } + } + } + }, + "links": { + "self": { + "operationId": "findMultiRegionFailoverByEnvironmentId", + "parameters": { + "environmentId": "$request.path.environmentId" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true + "message": { + "type": "string" } }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" - } - } - }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" - } - } - } - ] - } + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] } ] }, - { + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Failover_Service_API_BearerAuth": [] + } + ] + }, + "put": { + "summary": "Enables multi-region failover for an environment.", + "operationId": "saveMultiRegionFailoverByEnvironmentId", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "environments:update-multi-region-failover" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "failover-service" + } + }, + "tags": [ + "Environments" + ], + "parameters": [ + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + } + ], + "requestBody": { + "description": "Multi-region failover enable request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "region": { + "type": "string", + "description": "The region to enable multi-region failover for.", + "example": "us-east-1" + } + }, + "required": [ + "region" + ], + "additionalProperties": false, + "minProperties": 1 + }, + "examples": { + "enable": { + "summary": "Enables multi-region failover for a region", + "description": "Enables multi-region failover for the specified region", + "value": { + "region": "us-east-1" + } + } + } + } + } + }, + "responses": { + "202": { + "description": "Multi-region failover enable initiated", + "content": { + "application/hal+json": { + "schema": { "allOf": [ { "allOf": [ @@ -113304,25 +111828,13 @@ { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "_embedded" + "message" ] } ] @@ -113330,12 +111842,361 @@ { "type": "object", "properties": { - "_links": { + "message": { + "type": "string", + "const": "Multi-region failover enable has been initiated.", + "description": "Confirmation message that multi-region failover enable has been initiated." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/a1b2c3d4-e5f6-7890-abcd-ef1234567890/multi-region-failover" + } + }, + "message": "Multi-region failover enable has been initiated." + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Failover_Service_API_BearerAuth": [] + } + ] + }, + "delete": { + "summary": "Disables multi-region failover for an environment.", + "operationId": "deleteMultiRegionFailoverByEnvironmentId", + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "environments:delete-multi-region-failover" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "failover-service" + } + }, + "tags": [ + "Environments" + ], + "parameters": [ + { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + } + ], + "responses": { + "202": { + "description": "Multi-region failover disable initiated", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { "type": "object", "properties": { - "sort": { - "allOf": [ - { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { "type": "object", "description": "HAL link object", "properties": { @@ -113392,864 +112253,437 @@ "templated": true } ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] } - ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" - }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - } - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "allOf": [ - { + "required": [ + "self" + ], + "additionalProperties": { "type": "object", - "description": "A Site resource", + "description": "HAL link object", "properties": { - "id": { + "href": { "type": "string", - "description": "The unique identifier of the site", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "12345678-1234-1234-1234-123456789012" + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - "name": { + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { "type": "string", - "description": "The machine name of the site. Must start with a lowercase letter and contain only lowercase letters and numbers.", - "minLength": 1, - "maxLength": 14, - "pattern": "^[a-z][a-z0-9]*$", - "example": "mysite" + "description": "Hint about the media type expected when dereferencing the target resource" }, - "label": { + "deprecation": { "type": "string", - "description": "The human-readable label of the site", - "minLength": 1, - "maxLength": 50, - "example": "My Site 1" + "description": "A URL to a resource that provides deprecation information" }, - "description": { + "name": { "type": "string", - "description": "A description of the site", - "maxLength": 512, - "example": "A production site for the marketing team." + "description": "A secondary key for selecting links" }, - "codebase_id": { + "profile": { "type": "string", - "description": "The unique identifier of the codebase this site belongs to", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "550e8400-e29b-41d4-a716-446655441210" + "description": "A URI that hints about the profile of the target resource" }, - "status": { + "title": { "type": "string", - "description": "The current lifecycle status of the site. ready indicates the site is active and operational. marked-for-deletion indicates the site has been scheduled for deletion and can still be recovered.\n", - "enum": [ - "ready", - "marked-for-deletion" - ], - "example": "ready" + "description": "A human-readable identifier for the link" }, - "delete_at": { + "hreflang": { "type": "string", - "format": "date-time", - "description": "ISO 8601 datetime indicating when the site is scheduled for deletion. Only present when status is marked-for-deletion.", - "example": "2025-06-15T00:00:00Z" + "description": "The language of the target resource" } }, "required": [ - "id", - "name", - "label", - "codebase_id", - "status" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } - ] - } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] } - }, - "required": [ - "items" ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - "examples": { - "site_collection": { - "summary": "Site collection with pagination", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sites?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/sites?offset=0{&limit}", - "templated": true }, - "offset": { - "href": "https://api.acquia.com/v3/sites?limit=2{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/sites?limit=2&offset=0{&filter}", - "templated": true - }, - "sort": { - "href": "https://api.acquia.com/v3/sites?limit=2&offset=0{&sort}", - "templated": true - }, - "next": { - "href": "https://api.acquia.com/v3/sites?limit=2&offset=2" - } - }, - "count": 2, - "total": 4, - "pagination": { - "total": 4, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890", - "name": "mysite", - "label": "My Site", - "description": "A description of my site.", - "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", - "status": "ready", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sites/f1a2b3c4-d5e6-7890-abcd-ef1234567890" - } - } - }, - { - "id": "e2b3c4d5-f6a7-8901-bcde-f12345678901", - "name": "anothersite", - "label": "Another Site", - "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", - "status": "marked-for-deletion", - "delete_at": "2025-01-01T00:00:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/sites/e2b3c4d5-f6a7-8901-bcde-f12345678901" - } + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Multi-region failover disable has been initiated.", + "description": "Confirmation message that multi-region failover disable has been initiated." } } - ] - } - } - } - } - } - } - }, - "CDN_API_ValidationError": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - } - } - }, - "CDN_API_UnauthorizedError": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" } - }, - "required": [ - "error", - "message" ] }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/a1b2c3d4-e5f6-7890-abcd-ef1234567890/multi-region-failover" } }, - "required": [ - "error", - "message" - ] + "message": "Multi-region failover disable has been initiated." } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." + } } - } - } - }, - "CDN_API_ForbiddenError": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] }, - "message": { - "type": "string" + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] } - }, - "required": [ - "error", - "message" ] }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." + } } - } - } - }, - "CDN_API_NotFoundError": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] }, - "message": { - "type": "string" + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] } - }, - "required": [ - "error", - "message" ] }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." + } } - } - } - }, - "CDN_API_InvalidOperationError": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] }, - "message": { - "type": "string" + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] } - }, - "required": [ - "error", - "message" ] }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." + } } - } - } - }, - "CDN_API_InternalServerError": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] }, - "message": { - "type": "string" + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] } - }, - "required": [ - "error", - "message" ] }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } } - } - } - }, - "CDN_API_DomainCollection": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { "allOf": [ { "type": "object", "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "error": { + "type": "string" }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "message": { + "type": "string" } }, "required": [ - "_links" + "error", + "message" ] }, { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." } }, "required": [ - "_embedded" + "error", + "message" ] } ] }, - { + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Failover_Service_API_BearerAuth": [] + } + ] + } + }, + "/subscriptions/{subscriptionId}/sso-domains": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "post": { + "operationId": "createSsoDomainBySubscriptionId", + "summary": "Create a new domain for federated SSO.", + "tags": [ + "Domains" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "subscriptions:create-sso-domain" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "identity-service" + } + }, + "parameters": [ + { + "name": "subscriptionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the subscription." + } + ], + "requestBody": { + "description": "Request body for creating a new domain.", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z]{2,})+$", + "description": "The domain name to create (e.g., \"acme.com\")." + } + }, + "required": [ + "domain" + ], + "additionalProperties": false + }, + "example": { + "domain": "acme.com" + } + } + } + }, + "responses": { + "202": { + "description": "Domain creation accepted. The domain is being added to your subscription. To complete verification, add the provided DNS TXT record and call the verify action.", + "content": { + "application/hal+json": { + "schema": { "allOf": [ { "allOf": [ @@ -114394,25 +112828,13 @@ { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "_embedded" + "message" ] } ] @@ -114420,525 +112842,392 @@ { "type": "object", "properties": { - "_links": { - "type": "object", - "properties": { - "prev": { - "description": "Link to the previous page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "next": { - "description": "Link to the next page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "offset": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for offset" - }, - "limit": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for limit" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "count": { - "type": "integer", - "description": "The number of items in the current page" + "message": { + "const": "Domain creation has been accepted." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sso-domains/dom-456" + } + }, + "message": "Domain creation has been accepted." + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "total": { - "type": "integer", - "description": "The total number of items available" + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" }, - "pagination": { - "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" - } - }, - "required": [ - "total", - "limit", - "offset" - ] + "message": { + "type": "string", + "const": "You do not have permission to access this resource." } }, "required": [ - "count", - "total", - "pagination" + "error", + "message" ] } - ], - "examples": [ + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "type": "object", + "properties": { + "error": { + "type": "string" }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "message": { + "type": "string" } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "required": [ + "error", + "message" + ] }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "required": [ + "error", + "message" + ] }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "message": { + "type": "string" } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "required": [ + "error", + "message" + ] } ] }, - { + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Federated_Authentication_API_BearerAuth": [] + } + ] + }, + "get": { + "summary": "Return a list of domains for a subscription.", + "operationId": "getSsoDomainsBySubscriptionId", + "tags": [ + "Domains" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "subscriptions:list-sso-domains" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "identity-service" + } + }, + "parameters": [ + { + "name": "subscriptionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the subscription." + }, + { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" + }, + { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "status=active;type=standard" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { "allOf": [ { "allOf": [ @@ -115107,16 +113396,182 @@ ] }, { - "type": "object", - "properties": { - "_links": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { "type": "object", "properties": { - "filter": { - "allOf": [ - { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", "type": "object", - "description": "HAL link object", "properties": { "href": { "type": "string", @@ -115172,169 +113627,9 @@ } ] }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" - } - } - }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" - } - } - } - ] - } - } - ] - }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { + "next": { + "description": "Link to the next page (templated)", "type": "object", - "description": "HAL link object", "properties": { "href": { "type": "string", @@ -115389,37 +113684,188 @@ "templated": true } ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", "description": "A URL to a resource that provides deprecation information" }, "name": { @@ -115453,370 +113899,586 @@ ] } }, - "_embedded": { + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] } }, "required": [ - "_links" + "count", + "total", + "pagination" ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } }, { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" } } }, - "required": [ - "items" - ] + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true } }, - "required": [ - "_embedded" - ] + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } } ] }, { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "sort": { - "allOf": [ - { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { "type": "object", - "description": "HAL link object", + "description": "HAL links for the resource", "properties": { - "href": { - "type": "string", - "anyOf": [ + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, "required": [ - "href" + "self" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - { + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { "type": "object", + "description": "Embedded resources for the collection", "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } } }, "required": [ - "templated" + "items" ] } - ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" - }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } + "required": [ + "_embedded" + ] } - }, - { - "id": "2", - "name": "Resource 2", + ] + }, + { + "type": "object", + "properties": { "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - } - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "allOf": [ - { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, + "additionalProperties": { "type": "object", - "description": "CDN domain resource.", + "description": "HAL link object", "properties": { - "domain": { + "href": { "type": "string", - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]?(\\.[a-zA-Z]{2,})+$", - "description": "The fully qualified domain name." + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - "subscription_uuid": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "The unique identifier of the subscription the domain belongs to." + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" }, - "environment_id": { + "type": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "The environment identifier associated with the domain." + "description": "Hint about the media type expected when dereferencing the target resource" }, - "application_name": { + "deprecation": { "type": "string", - "description": "The name of the application associated with the domain." + "description": "A URL to a resource that provides deprecation information" }, - "status": { + "name": { "type": "string", - "description": "The current status of the domain.", - "enum": [ - "connecting-to-edge", - "domain-validation-pending", - "ready-for-dns-repointing", - "configuration-failed", - "configured" - ] + "description": "A secondary key for selecting links" }, - "ownership_validation_cname": { + "profile": { "type": "string", - "description": "The CNAME record that must be created on the domain's DNS to validate ownership." - }, - "bandwidth_usage_tb": { - "type": "number", - "format": "float", - "description": "The bandwidth usage for the domain in terabytes." + "description": "A URI that hints about the profile of the target resource" }, - "created_at": { + "title": { "type": "string", - "format": "date-time", - "description": "The timestamp when the domain was created." + "description": "A human-readable identifier for the link" }, - "updated_at": { + "hreflang": { "type": "string", - "format": "date-time", - "description": "The timestamp when the domain was last updated." + "description": "The language of the target resource" } }, "required": [ - "domain", - "subscription_uuid", - "environment_id", - "status", - "application_name", - "ownership_validation_cname", - "bandwidth_usage_tb", - "created_at", - "updated_at" + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] + } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } }, { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { "type": "object", "description": "HAL link object", "properties": { @@ -115875,1275 +114537,991 @@ ] } }, - "_embedded": { + "required": [ + "self" + ], + "additionalProperties": { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - "examples": { - "domains_response": { - "summary": "Domain collection with pagination", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?limit=2{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?limit=2&offset=0{&filter}", - "templated": true - }, - "sort": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?limit=2&offset=0{&sort}", - "templated": true - }, - "next": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?limit=2&offset=2" - } - }, - "count": 2, - "total": 50, - "pagination": { - "total": 50, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "domain": "example.com", - "subscription_uuid": "12345678-1234-1234-1234-123456789012", - "environment_id": "0c3f0f5f-5727-4838-9459-2d90ee1cf7c1", - "application_name": "my-application", - "status": "configured", - "created_at": "2024-01-15T10:30:00Z", - "updated_at": "2024-01-20T15:45:00Z", - "ownership_validation_cname": "_acme-challenge.example.com", - "bandwidth_usage_tb": 1.25, - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains/example.com" - } - } - }, - { - "domain": "test.example.org", - "subscription_uuid": "12345678-1234-1234-1234-123456789012", - "environment_id": "1d4f1f6f-6838-5949-a560-3e01ff2cf8d2", - "application_name": "test-application", - "status": "connecting-to-edge", - "created_at": "2024-01-18T08:15:00Z", - "ownership_validation_cname": "_acme-challenge.example.com", - "bandwidth_usage_tb": 1.25, - "updated_at": "2024-01-18T08:15:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains/test.example.org" - } - } - } - ] - } - } - } - } - } - } - }, - "CDN_API_Domain": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "description": "CDN domain resource.", - "properties": { - "domain": { - "type": "string", - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]?(\\.[a-zA-Z]{2,})+$", - "description": "The fully qualified domain name." - }, - "subscription_uuid": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "The unique identifier of the subscription the domain belongs to." - }, - "environment_id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "The environment identifier associated with the domain." - }, - "application_name": { - "type": "string", - "description": "The name of the application associated with the domain." - }, - "status": { - "type": "string", - "description": "The current status of the domain.", - "enum": [ - "connecting-to-edge", - "domain-validation-pending", - "ready-for-dns-repointing", - "configuration-failed", - "configured" - ] - }, - "ownership_validation_cname": { - "type": "string", - "description": "The CNAME record that must be created on the domain's DNS to validate ownership." - }, - "bandwidth_usage_tb": { - "type": "number", - "format": "float", - "description": "The bandwidth usage for the domain in terabytes." - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp when the domain was created." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp when the domain was last updated." - } - }, - "required": [ - "domain", - "subscription_uuid", - "environment_id", - "status", - "application_name", - "ownership_validation_cname", - "bandwidth_usage_tb", - "created_at", - "updated_at" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - { - "format": "uri-template" + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + }, + "required": [ + "_links" + ] }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - }, - "example": { - "domain": "example.com", - "subscription_uuid": "12345678-1234-1234-1234-123456789012", - "environment_id": "0c3f0f5f-5727-4838-9459-2d90ee1cf7c1", - "application_name": "my-application", - "status": "configured", - "ownership_validation_cname": "_acme-challenge.example.com", - "bandwidth_usage_tb": 1.25, - "created_at": "2024-01-15T10:30:00Z", - "updated_at": "2024-01-20T15:45:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains/example.com" - } - } - } - } - }, - "links": { - "self": { - "operationId": "findDomainBySubscriptionUuidAndDomainName", - "parameters": { - "subscriptionUuid": "$request.path.subscriptionUuid", - "domainName": "$request.path.domainName" - } - } - } - }, - "CDN_API_DomainCdnProvisioningAccepted": { - "description": "Accepted - Provisioning in progress", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { "type": "object", - "description": "HAL link object", "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + }, + "required": [ + "items" + ] } }, "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } + "_embedded" ] } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + ] }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "The domain provisioning has been started.", - "description": "Confirmation message" - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains/example.com" - } - }, - "message": "The domain provisioning has been started." - } - } - } - }, - "CDN_API_DomainCdnDeprovisioningAccepted": { - "description": "Accepted - Deprovisioning in progress", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "_links": { "type": "object", - "description": "HAL link object", "properties": { - "href": { - "type": "string", - "anyOf": [ + "sort": { + "allOf": [ { - "format": "uri" + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] }, { - "format": "uri-template" + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] } ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" }, - "required": [ - "href" - ], - "examples": [ + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", + "templated": true + } + }, + "_embedded": { + "items": [ { - "href": "https://api.acquia.com/v3/resources/1" + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } } ] } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} } - }, - "required": [ - "_links" ] }, { "type": "object", "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "The domain deprovisioning has been started.", - "description": "Confirmation message" - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains/example.com" - } - }, - "message": "The domain deprovisioning has been started." - } - } - } - }, - "CDN_API_PurgeAccepted": { - "description": "Accepted - Purge request submitted", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { + "_embedded": { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, + "items": { + "type": "array", + "items": { + "allOf": [ { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "type": "object", + "properties": { + "domain_id": { + "type": "string", + "description": "Unique identifier for the domain." + }, + "domain": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z]{2,})+$", + "description": "The domain name (e.g., \"acme.com\")." + }, + "subscription_id": { + "type": "string", + "description": "Unique identifier for the subscription that the domain belongs to." + }, + "health": { + "type": "object", + "description": "The overall verification health of the domain. Uses the same code semantics as the platform email domain-verification system: `200` verified, `202` verification pending or in progress, `404` DNS record not found or could not be validated.", + "properties": { + "code": { + "type": "string", + "enum": [ + "200", + "202", + "404" + ], + "description": "Machine-readable verification status code. `200` — verified. `202` — verification pending or in progress; retry after propagation. `404` — DNS TXT record not found or does not match expected value." + }, + "summary": { + "type": "string", + "description": "Short human-readable label for the verification state (e.g., \"Verified\", \"Verification pending\", \"Missing DNS record\")." + }, + "details": { + "type": "string", + "description": "Actionable explanation of the current state. For `404`, describes what was checked and what the customer should do next." + } + }, + "required": [ + "code", + "summary", + "details" + ] + }, + "verification_record": { + "type": "object", + "description": "DNS TXT record the customer must publish to verify domain ownership.", + "properties": { + "type": { + "type": "string", + "const": "TXT", + "description": "DNS record type." + }, + "host": { + "type": "string", + "description": "DNS record host name." + }, + "value": { + "type": "string", + "description": "Expected DNS record value." + }, + "health": { + "type": "object", + "description": "Verification health specific to this DNS record. Anchors the failure reason to the exact record the customer needs to fix, matching the per-record health pattern used in platform email domain verification.", + "properties": { + "code": { + "type": "string", + "enum": [ + "200", + "202", + "404" + ], + "description": "`200` — record found and value matches. `202` — check in progress. `404` — record not found or value does not match." + }, + "summary": { + "type": "string", + "description": "Short human-readable label for this record's verification state." + }, + "details": { + "type": "string", + "description": "Actionable explanation; for `404`, states what was checked and what to fix." + } + }, + "required": [ + "code", + "summary", + "details" + ] + } + }, + "required": [ + "type", + "host", + "value", + "health" + ] + }, + "verified_at": { + "type": "string", + "format": "date-time", + "description": "Timestamp when the domain was successfully verified. Present only when `health.code` is `200`." + } + }, + "required": [ + "domain_id", + "domain", + "subscription_id", + "health", + "verification_record" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + }, + "required": [ + "items" + ] } }, "required": [ - "_links" + "_embedded" + ] + } + ] + }, + "examples": { + "domain_response": { + "summary": "Domain collection with pagination", + "description": "Two domains in different states: one verified and in use by a policy (carries `identity_providers` link), one pending verification (carries `verify` link).", + "value": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?limit=2&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?limit=2{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?limit=2&offset=0{&filter}", + "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?limit=2&offset=0{&sort}", + "templated": true + }, + "next": { + "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?offset=2&limit=2" + } + }, + "count": 2, + "total": 3, + "pagination": { + "total": 3, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "domain_id": "dom-456", + "domain": "acme.com", + "subscription_id": "sub-123", + "health": { + "code": "200", + "summary": "Verified", + "details": "The DNS TXT record has been confirmed and the domain is verified." + }, + "verification_record": { + "type": "TXT", + "host": "_acquia-challenge.acme.com", + "value": "abc123def456", + "health": { + "code": "200", + "summary": "Verified", + "details": "The TXT record at _acquia-challenge.acme.com matches the expected value." + } + }, + "verified_at": "2026-04-15T10:30:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sso-domains/dom-456" + }, + "identity_providers": { + "href": "https://api.acquia.com/v3/identity-providers?filter=domain_id%3Ddom-456" + } + } + }, + { + "domain_id": "dom-789", + "domain": "acme.corp", + "subscription_id": "sub-123", + "health": { + "code": "202", + "summary": "Verification pending", + "details": "Acquia is waiting to confirm the DNS TXT record. Ensure the record has been published and allow time for DNS propagation, then retry verification." + }, + "verification_record": { + "type": "TXT", + "host": "_acquia-challenge.acme.corp", + "value": "xyz789abc123", + "health": { + "code": "202", + "summary": "Check in progress", + "details": "The TXT record check has not yet completed." + } + }, + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sso-domains/dom-789" + }, + "verify": { + "href": "https://api.acquia.com/v3/sso-domains/dom-789/actions/verify" + } + } + } + ] + } + } + } + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" ] }, { "type": "object", "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, "message": { "type": "string", - "description": "The message content" + "const": "You do not have permission to access this resource." } }, "required": [ + "error", "message" ] } ] }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "The purge request has been submitted.", - "description": "Confirmation message" - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/0c3f0f5f-5727-4838-9459-2d90ee1cf7c1/actions/purge-cdn" + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." } - }, - "message": "The purge request has been submitted." + } } - } - } - }, - "CDN_API_SecurityRuleSet": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 1, - "description": "The unique identifier of the security ruleset." - }, - "name": { - "type": "string", - "description": "The display name of the security ruleset." - }, - "is_enabled": { - "type": "boolean", - "description": "Indicates whether the security ruleset is enabled." - }, - "description": { - "type": "string", - "description": "The description of the security ruleset." + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] }, - "type": { - "type": "string", - "description": "The type of the security ruleset.", - "enum": [ - "owasp", - "acquia-managed" + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" ] } - }, - "required": [ - "id", - "name", - "is_enabled" ] }, - { - "type": "object", - "properties": { - "_links": { + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "error": { + "type": "string" + }, + "message": { + "type": "string" } }, "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "error", + "message" + ] }, - "_embedded": { + { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] } - }, - "required": [ - "_links" ] - } - ] - }, - "example": { - "id": 1, - "name": "OWASP Top 10", - "is_enabled": true, - "description": "OWASP Top 10 security ruleset", - "type": "owasp", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets/1" + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." } } } - } - }, - "links": { - "self": { - "operationId": "findSecurityRuleSetBySubscriptionUuidAndRuleSetId", - "parameters": { - "subscriptionUuid": "$request.path.subscriptionUuid", - "ruleSetId": "$request.path.ruleSetId" - } - } - } - }, - "CDN_API_SecurityRuleSetCollection": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { "allOf": [ { "type": "object", "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "error": { + "type": "string" }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "message": { + "type": "string" } }, "required": [ - "_links" + "error", + "message" ] }, { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." } }, "required": [ - "_embedded" + "error", + "message" ] } ] }, - { + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Federated_Authentication_API_BearerAuth": [] + } + ] + } + }, + "/subscriptions/{subscriptionId}/identity-providers": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "post": { + "operationId": "createIdentityProviderBySubscriptionId", + "summary": "Create a new Identity Provider.", + "tags": [ + "Identity Providers" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "subscriptions:create-identity-provider" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "identity-service" + } + }, + "parameters": [ + { + "name": "subscriptionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the subscription." + } + ], + "requestBody": { + "description": "Request body for creating a new Identity Provider.", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "idp_entity_id": { + "type": "string", + "format": "uri", + "description": "The Identity Provider Entity ID." + }, + "label": { + "type": "string", + "description": "The name of the Identity Provider." + }, + "sso_url": { + "type": "string", + "format": "uri", + "description": "The SSO URL for this IdP." + }, + "certificate": { + "type": "string", + "description": "The certificate for this IdP." + } + }, + "required": [ + "label", + "idp_entity_id", + "sso_url", + "certificate" + ], + "additionalProperties": false + }, + "example": { + "label": "Acme Corporation Azure AD", + "idp_entity_id": "https://idp.acme.com/saml", + "sso_url": "https://acme.com/sso", + "certificate": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----" + } + } + } + }, + "responses": { + "202": { + "description": "Identity Provider creation initiated. The Identity Provider is being provisioned. Poll the Identity Provider resource to check when it becomes active.", + "content": { + "application/hal+json": { + "schema": { "allOf": [ { "allOf": [ @@ -117288,25 +115666,13 @@ { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "_embedded" + "message" ] } ] @@ -117314,130 +115680,736 @@ { "type": "object", "properties": { - "_links": { + "message": { + "const": "Identity Provider creation has been accepted." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/identity-providers/9078ead6-dfc9-4868-8800-723fb6da706f" + } + }, + "message": "Identity Provider creation has been accepted." + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Federated_Authentication_API_BearerAuth": [] + } + ] + }, + "get": { + "summary": "Return a list of Identity Providers for a subscription.", + "operationId": "getIdentityProvidersBySubscriptionId", + "tags": [ + "Identity Providers" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "subscriptions:list-identity-providers" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "identity-service" + } + }, + "parameters": [ + { + "name": "subscriptionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the subscription." + }, + { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" + }, + { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "status=active;type=standard" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { "type": "object", "properties": { - "prev": { - "description": "Link to the previous page (templated)", + "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "href": { - "type": "string", - "anyOf": [ + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, "required": [ - "href" + "self" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } } + }, + "required": [ + "items" ] - }, - "next": { - "description": "Link to the next page (templated)", + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { "type": "object", "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } + }, + "required": [ + "self" ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } + "_links" ] }, - "offset": { - "allOf": [ - { + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", "type": "object", - "description": "HAL link object", "properties": { "href": { "type": "string", @@ -117493,28 +116465,9 @@ } ] }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for offset" - }, - "limit": { - "allOf": [ - { + "next": { + "description": "Link to the next page (templated)", "type": "object", - "description": "HAL link object", "properties": { "href": { "type": "string", @@ -117570,383 +116523,582 @@ } ] }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" ] } - }, - "required": [ - "templated" - ] + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" } - ], - "description": "Templated link for limit" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { - "type": "object", - "properties": { - "total": { + "count": { "type": "integer", - "description": "The total number of items available" + "description": "The number of items in the current page" }, - "limit": { + "total": { "type": "integer", - "description": "The maximum number of items to retrieve in a single page" + "description": "The total number of items available" }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] } }, "required": [ + "count", "total", - "limit", - "offset" + "pagination" ] } - }, - "required": [ - "count", - "total", - "pagination" - ] - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true } }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } } - } + ] } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true } }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } } - } + ] } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 - }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true } }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - } - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "allOf": [ + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 1, - "description": "The unique identifier of the security ruleset." - }, - "name": { - "type": "string", - "description": "The display name of the security ruleset." - }, - "is_enabled": { - "type": "boolean", - "description": "Indicates whether the security ruleset is enabled." - }, - "description": { - "type": "string", - "description": "The description of the security ruleset." - }, - "type": { - "type": "string", - "description": "The type of the security ruleset.", - "enum": [ - "owasp", - "acquia-managed" - ] + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" } - }, - "required": [ - "id", - "name", - "is_enabled" - ] + } }, { - "type": "object", - "properties": { - "_links": { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { "type": "object", - "description": "HAL links for the resource", + "description": "HAL link object", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "self" + "href" ], - "additionalProperties": { + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { "type": "object", "description": "HAL link object", "properties": { @@ -118003,741 +117155,408 @@ "templated": true } ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] } + ], + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "_links" + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } - ] - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - "examples": { - "security_rule_sets_response": { - "summary": "Security rulesets collection with pagination", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets?limit=2{&offset}", - "templated": true - } - }, - "count": 2, - "total": 5, - "pagination": { - "total": 5, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": 123, - "name": "OWASP Core Ruleset", - "is_enabled": true, - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets/123" - } - } - }, - { - "id": 456, - "name": "Bot Protection", - "is_enabled": false, - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets/456" + } } } - } - ] - } - } - } - } - } - } - }, - "CDN_API_SecurityRuleSetUpdated": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { + ], + "examples": [ + { + "_links": { "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true } }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + } }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" }, - "required": [ - "href" - ], - "examples": [ + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ { - "href": "https://api.acquia.com/v3/resources/1" + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } } ] } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} } - }, - "required": [ - "_links" ] }, { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "The security ruleset has been updated.", - "description": "Confirmation message" - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets/123" - } - }, - "message": "The security ruleset has been updated." - } - } - } - }, - "CDN_API_IpRule": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 1, - "description": "The unique identifier of the IP rule." - }, - "display_name": { - "type": "string", - "description": "The display name of the IP rule." - }, - "action": { - "type": "string", - "enum": [ - "block", - "allow" - ], - "description": "The action applied when the rule matches." - }, - "description": { - "type": "string", - "description": "The description of the IP rule." - }, - "ips": { - "type": "array", - "description": "The IPs or CIDR blocks associated with the rule.", - "items": { - "type": "string", - "description": "An IP address or CIDR block." - } - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was created." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was last updated." - } - }, - "required": [ - "id", - "display_name", - "action", - "ips", - "created_at", - "updated_at" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, + "allOf": [ + { + "allOf": [ { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - }, - "example": { - "id": 101, - "display_name": "Block office VPN", - "action": "allow", - "description": "Allow traffic from the office VPN", - "ips": [ - "203.0.113.0/24" - ], - "created_at": "2026-05-01T12:00:00Z", - "updated_at": "2026-05-10T09:30:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/101" - } - } - } - } - }, - "links": { - "self": { - "operationId": "findIpRuleBySubscriptionUuidAndIpRuleId", - "parameters": { - "subscriptionUuid": "$request.path.subscriptionUuid", - "ipRuleId": "$request.path.ipRuleId" - } - } - } - }, - "CDN_API_IpRuleCollection": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { "type": "object", - "description": "HAL link object", "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } + }, + "required": [ + "self" ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } + "_links" ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } + "required": [ + "_embedded" + ] } - }, - "required": [ - "items" ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "allOf": [ - { - "allOf": [ + }, { "type": "object", "properties": { "_links": { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "sort": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + ] }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] } - ] + ], + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" } }, - "required": [ - "self" - ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -118796,436 +117615,289 @@ } ] } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", + "templated": true } }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" } } }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } } ] }, { "type": "object", "properties": { - "_links": { + "_embedded": { "type": "object", "properties": { - "prev": { - "description": "Link to the previous page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "next": { - "description": "Link to the next page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "offset": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "identity_provider_id": { + "type": "string", + "description": "Unique identifier for the identity provider." + }, + "label": { + "type": "string", + "description": "The name of the Identity Provider." + }, + "subscription_id": { + "type": "string", + "description": "Unique identifier for the subscription that the Identity Provider belongs to." + }, + "idp_entity_id": { + "type": "string", + "format": "uri", + "description": "The Identity Provider Entity ID." + }, + "sp_entity_id": { + "type": "string", + "format": "uri", + "description": "The Service Provider Entity ID." + }, + "sso_url": { + "type": "string", + "format": "uri", + "description": "The Single Sign-On URL for the Identity Provider." + }, + "certificate": { + "type": "string", + "description": "The X.509 certificate used for SAML authentication." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Timestamp when the Identity Provider was created." + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for offset" - }, - "limit": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for limit" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" + "required": [ + "identity_provider_id", + "label", + "subscription_id", + "idp_entity_id", + "sp_entity_id", + "sso_url", + "certificate", + "created_at" + ] }, { - "format": "uri-template" + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + ] } - ] - } - }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { - "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" } }, "required": [ - "total", - "limit", - "offset" + "items" ] } }, "required": [ - "count", - "total", - "pagination" + "_embedded" ] } - ], - "examples": [ - { + ] + }, + "examples": { + "identity_provider_response": { + "summary": "Identity provider collection with pagination", + "value": { "_links": { "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?limit=2&offset=2" }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + "limit": { + "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?offset=2{&limit}", + "templated": true }, "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", + "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?limit=2{&offset}", "templated": true }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", + "filter": { + "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?limit=2&offset=2{&filter}", "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?limit=2&offset=2{&sort}", + "templated": true + }, + "prev": { + "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?limit=2&offset=0" + }, + "next": { + "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?offset=4&limit=2" } }, "count": 2, @@ -119238,123 +117910,367 @@ "_embedded": { "items": [ { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", + "identity_provider_id": "908914ec-2354-4fb1-9298-637247eccc3a", + "label": "Acme Corporation Azure AD", + "subscription_id": "sub-123", + "idp_entity_id": "https://idp.acme.com/saml", + "sp_entity_id": "https://sp.acme.com/saml", + "sso_url": "https://acme.com/sso", + "certificate": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----", + "created_at": "2026-04-15T11:00:00Z", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + "href": "https://api.acquia.com/v3/identity-providers/908914ec-2354-4fb1-9298-637247eccc3a" + }, + "sso_policy": { + "href": "https://api.acquia.com/v3/identity-providers/908914ec-2354-4fb1-9298-637247eccc3a/policies/sso" } } }, { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", + "identity_provider_id": "123456ec-2354-4fb1-9298-637247eccc3b", + "label": "Acme Research Ping Identity", + "subscription_id": "sub-123", + "idp_entity_id": "https://idp-research.acme.com/saml", + "sp_entity_id": "https://sp-research.acme.com/saml", + "sso_url": "https://research.acme.com/sso", + "certificate": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----", + "created_at": "2026-04-20T14:20:00Z", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + "href": "https://api.acquia.com/v3/identity-providers/123456ec-2354-4fb1-9298-637247eccc3b" + }, + "sso_policy": { + "href": "https://api.acquia.com/v3/identity-providers/123456ec-2354-4fb1-9298-637247eccc3b/policies/sso" } } } ] } + } + } + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + "type": "object", + "properties": { + "error": { + "type": "string" }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "message": { + "type": "string", + "const": "You do not have permission to access this resource." } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "required": [ + "error", + "message" + ] }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] } ] }, - { + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Federated_Authentication_API_BearerAuth": [] + } + ] + } + }, + "/sso-domains": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Return a list of all accessible domains.", + "operationId": "getSsoDomains", + "tags": [ + "Domains" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "sso-domains:list" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "identity-service" + } + }, + "parameters": [ + { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" + }, + { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "status=active;type=standard" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { "allOf": [ { "allOf": [ @@ -119523,16 +118439,182 @@ ] }, { - "type": "object", - "properties": { - "_links": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { "type": "object", "properties": { - "filter": { - "allOf": [ - { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", "type": "object", - "description": "HAL link object", "properties": { "href": { "type": "string", @@ -119588,228 +118670,219 @@ } ] }, - { + "next": { + "description": "Link to the next page (templated)", "type": "object", "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, "templated": { "type": "boolean", - "enum": [ - true - ] + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "templated" + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] - } - ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" - } - } - }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" - } - } - } - ] - } - } - ] - }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + ] }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] } - }, - "required": [ - "href" ], - "examples": [ + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] } - ] + ], + "description": "Templated link for limit" } }, - "required": [ - "self" - ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -119869,356 +118942,368 @@ ] } }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { "type": "object", - "description": "Embedded resources for the collection", "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" } }, "required": [ - "items" + "total", + "limit", + "offset" ] } }, "required": [ - "_embedded" + "count", + "total", + "pagination" ] } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "sort": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true } }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + } }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" }, - "required": [ - "href" - ], - "examples": [ + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ { - "href": "https://api.acquia.com/v3/resources/1" + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } } ] } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true } }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - } - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "allOf": [ + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 1, - "description": "The unique identifier of the IP rule." - }, - "display_name": { - "type": "string", - "description": "The display name of the IP rule." - }, - "action": { - "type": "string", - "enum": [ - "block", - "allow" - ], - "description": "The action applied when the rule matches." - }, - "description": { - "type": "string", - "description": "The description of the IP rule." - }, - "ips": { - "type": "array", - "description": "The IPs or CIDR blocks associated with the rule.", - "items": { - "type": "string", - "description": "An IP address or CIDR block." - } - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was created." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was last updated." + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" } - }, - "required": [ - "id", - "display_name", - "action", - "ips", - "created_at", - "updated_at" - ] + } }, { - "type": "object", - "properties": { - "_links": { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { "type": "object", - "description": "HAL links for the resource", + "description": "HAL link object", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "self" + "href" ], - "additionalProperties": { + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { "type": "object", "description": "HAL link object", "properties": { @@ -120275,804 +119360,504 @@ "templated": true } ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] } + ], + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "_links" + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } - ] + } } } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - "examples": { - "ip_rules_response": { - "summary": "IP rules collection with pagination", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?limit=2{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?limit=2&offset=0{&filter}", - "templated": true - }, - "sort": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?limit=2&offset=0{&sort}", - "templated": true - }, - "next": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?offset=2&limit=2" - } - }, - "count": 2, - "total": 5, - "pagination": { - "total": 5, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": 101, - "display_name": "Block office IPs", - "action": "block", - "description": "Blocks office IP ranges.", - "ips": [ - "192.0.2.10", - "198.51.100.0/24" - ], - "created_at": "2026-05-01T12:00:00Z", - "updated_at": "2026-05-10T09:30:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/101" - } - } - }, - { - "id": 102, - "display_name": "Allow support", - "action": "allow", - "description": "Allows support traffic.", - "ips": [ - "203.0.113.5" - ], - "created_at": "2026-05-02T08:15:00Z", - "updated_at": "2026-05-11T13:45:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/102" - } - } - } - ] - } - } - } - } - } - } - }, - "CDN_API_IpRuleCreated": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { + ], + "examples": [ + { + "_links": { "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true } }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + } }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" }, - "required": [ - "href" - ], - "examples": [ + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ { - "href": "https://api.acquia.com/v3/resources/1" + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } } ] } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} } - }, - "required": [ - "_links" ] }, { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "The IP rule has been created.", - "description": "Confirmation message" - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/101" - } - }, - "message": "The IP rule has been created." - } - } - } - }, - "CDN_API_IpRuleUpdated": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { + "allOf": [ + { + "allOf": [ + { "type": "object", - "description": "HAL link object", "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } + }, + "required": [ + "self" ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } + "_links" ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "The IP rule has been updated.", - "description": "Confirmation message" - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/101" - } - }, - "message": "The IP rule has been updated." - } - } - } - }, - "CDN_API_IpRuleDeleted": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { + { "type": "object", - "description": "HAL link object", "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + }, + "required": [ + "items" + ] } }, "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } + "_embedded" ] } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + ] }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "The IP rule has been deleted.", - "description": "Confirmation message" - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/101" - } - }, - "message": "The IP rule has been deleted." - } - } - } - }, - "CDN_API_CustomRuleCollection": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "_links": { "type": "object", - "description": "HAL link object", "properties": { - "href": { - "type": "string", - "anyOf": [ + "sort": { + "allOf": [ { - "format": "uri" + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] }, { - "format": "uri-template" + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] } ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" }, - "required": [ - "href" - ], - "examples": [ + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", + "templated": true + } + }, + "_embedded": { + "items": [ { - "href": "https://api.acquia.com/v3/resources/1" + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } } ] } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} } - }, - "required": [ - "_links" ] }, { @@ -121080,15 +119865,263 @@ "properties": { "_embedded": { "type": "object", - "description": "Embedded resources for the collection", "properties": { "items": { "type": "array", - "description": "The array of resources in the collection", "items": { - "type": "object" - } - } + "allOf": [ + { + "type": "object", + "properties": { + "domain_id": { + "type": "string", + "description": "Unique identifier for the domain." + }, + "domain": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z]{2,})+$", + "description": "The domain name (e.g., \"acme.com\")." + }, + "subscription_id": { + "type": "string", + "description": "Unique identifier for the subscription that the domain belongs to." + }, + "health": { + "type": "object", + "description": "The overall verification health of the domain. Uses the same code semantics as the platform email domain-verification system: `200` verified, `202` verification pending or in progress, `404` DNS record not found or could not be validated.", + "properties": { + "code": { + "type": "string", + "enum": [ + "200", + "202", + "404" + ], + "description": "Machine-readable verification status code. `200` — verified. `202` — verification pending or in progress; retry after propagation. `404` — DNS TXT record not found or does not match expected value." + }, + "summary": { + "type": "string", + "description": "Short human-readable label for the verification state (e.g., \"Verified\", \"Verification pending\", \"Missing DNS record\")." + }, + "details": { + "type": "string", + "description": "Actionable explanation of the current state. For `404`, describes what was checked and what the customer should do next." + } + }, + "required": [ + "code", + "summary", + "details" + ] + }, + "verification_record": { + "type": "object", + "description": "DNS TXT record the customer must publish to verify domain ownership.", + "properties": { + "type": { + "type": "string", + "const": "TXT", + "description": "DNS record type." + }, + "host": { + "type": "string", + "description": "DNS record host name." + }, + "value": { + "type": "string", + "description": "Expected DNS record value." + }, + "health": { + "type": "object", + "description": "Verification health specific to this DNS record. Anchors the failure reason to the exact record the customer needs to fix, matching the per-record health pattern used in platform email domain verification.", + "properties": { + "code": { + "type": "string", + "enum": [ + "200", + "202", + "404" + ], + "description": "`200` — record found and value matches. `202` — check in progress. `404` — record not found or value does not match." + }, + "summary": { + "type": "string", + "description": "Short human-readable label for this record's verification state." + }, + "details": { + "type": "string", + "description": "Actionable explanation; for `404`, states what was checked and what to fix." + } + }, + "required": [ + "code", + "summary", + "details" + ] + } + }, + "required": [ + "type", + "host", + "value", + "health" + ] + }, + "verified_at": { + "type": "string", + "format": "date-time", + "description": "Timestamp when the domain was successfully verified. Present only when `health.code` is `200`." + } + }, + "required": [ + "domain_id", + "domain", + "subscription_id", + "health", + "verification_record" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } }, "required": [ "items" @@ -121101,172 +120134,456 @@ } ] }, - { + "examples": { + "domain_response": { + "summary": "Domain collection with pagination", + "description": "Two domains in different states: one verified and in use by a policy (carries `identity_providers` link), one pending verification (carries `verify` link).", + "value": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?limit=2&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?limit=2{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?limit=2&offset=0{&filter}", + "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?limit=2&offset=0{&sort}", + "templated": true + }, + "next": { + "href": "https://api.acquia.com/v3/subscriptions/sub-123/sso-domains?offset=2&limit=2" + } + }, + "count": 2, + "total": 3, + "pagination": { + "total": 3, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "domain_id": "dom-456", + "domain": "acme.com", + "subscription_id": "sub-123", + "health": { + "code": "200", + "summary": "Verified", + "details": "The DNS TXT record has been confirmed and the domain is verified." + }, + "verification_record": { + "type": "TXT", + "host": "_acquia-challenge.acme.com", + "value": "abc123def456", + "health": { + "code": "200", + "summary": "Verified", + "details": "The TXT record at _acquia-challenge.acme.com matches the expected value." + } + }, + "verified_at": "2026-04-15T10:30:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sso-domains/dom-456" + }, + "identity_providers": { + "href": "https://api.acquia.com/v3/identity-providers?filter=domain_id%3Ddom-456" + } + } + }, + { + "domain_id": "dom-789", + "domain": "acme.corp", + "subscription_id": "sub-123", + "health": { + "code": "202", + "summary": "Verification pending", + "details": "Acquia is waiting to confirm the DNS TXT record. Ensure the record has been published and allow time for DNS propagation, then retry verification." + }, + "verification_record": { + "type": "TXT", + "host": "_acquia-challenge.acme.corp", + "value": "xyz789abc123", + "health": { + "code": "202", + "summary": "Check in progress", + "details": "The TXT record check has not yet completed." + } + }, + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sso-domains/dom-789" + }, + "verify": { + "href": "https://api.acquia.com/v3/sso-domains/dom-789/actions/verify" + } + } + } + ] + } + } + } + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { "allOf": [ { - "allOf": [ - { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Federated_Authentication_API_BearerAuth": [] + } + ] + } + }, + "/sso-domains/{domainId}": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Return details about a specific domain.", + "operationId": "findSsoDomainBySsoDomainId", + "tags": [ + "Domains" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "sso-domains:find" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "identity-service" + } + }, + "parameters": [ + { + "name": "domainId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the domain." + } + ], + "responses": { + "200": { + "description": "OK. The `_links` object always contains `self`. Additional links are state-conditional: `verify` is present when `health.code` is `202` or `404` (POST it to initiate or retry DNS TXT record verification); `identity_providers` is present when the domain is referenced by one or more Identity Provider policies (follows to a filtered list of those IdPs; when present the domain cannot be deleted — remove it from all policies first).", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "domain_id": { + "type": "string", + "description": "Unique identifier for the domain." + }, + "domain": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z]{2,})+$", + "description": "The domain name (e.g., \"acme.com\")." + }, + "subscription_id": { + "type": "string", + "description": "Unique identifier for the subscription that the domain belongs to." + }, + "health": { "type": "object", + "description": "The overall verification health of the domain. Uses the same code semantics as the platform email domain-verification system: `200` verified, `202` verification pending or in progress, `404` DNS record not found or could not be validated.", "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" + "code": { + "type": "string", + "enum": [ + "200", + "202", + "404" ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "description": "Machine-readable verification status code. `200` — verified. `202` — verification pending or in progress; retry after propagation. `404` — DNS TXT record not found or does not match expected value." }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "summary": { + "type": "string", + "description": "Short human-readable label for the verification state (e.g., \"Verified\", \"Verification pending\", \"Missing DNS record\")." + }, + "details": { + "type": "string", + "description": "Actionable explanation of the current state. For `404`, describes what was checked and what the customer should do next." } }, "required": [ - "_links" + "code", + "summary", + "details" ] }, - { + "verification_record": { "type": "object", + "description": "DNS TXT record the customer must publish to verify domain ownership.", "properties": { - "_embedded": { + "type": { + "type": "string", + "const": "TXT", + "description": "DNS record type." + }, + "host": { + "type": "string", + "description": "DNS record host name." + }, + "value": { + "type": "string", + "description": "Expected DNS record value." + }, + "health": { "type": "object", - "description": "Embedded resources for the collection", + "description": "Verification health specific to this DNS record. Anchors the failure reason to the exact record the customer needs to fix, matching the per-record health pattern used in platform email domain verification.", "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } + "code": { + "type": "string", + "enum": [ + "200", + "202", + "404" + ], + "description": "`200` — record found and value matches. `202` — check in progress. `404` — record not found or value does not match." + }, + "summary": { + "type": "string", + "description": "Short human-readable label for this record's verification state." + }, + "details": { + "type": "string", + "description": "Actionable explanation; for `404`, states what was checked and what to fix." } }, "required": [ - "items" + "code", + "summary", + "details" ] } }, "required": [ - "_embedded" + "type", + "host", + "value", + "health" ] + }, + "verified_at": { + "type": "string", + "format": "date-time", + "description": "Timestamp when the domain was successfully verified. Present only when `health.code` is `200`." } + }, + "required": [ + "domain_id", + "domain", + "subscription_id", + "health", + "verification_record" ] }, { @@ -121274,68 +120591,11 @@ "properties": { "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "prev": { - "description": "Link to the previous page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "next": { - "description": "Link to the next page (templated)", + "self": { "type": "object", + "description": "HAL link object", "properties": { "href": { "type": "string", @@ -121390,100 +120650,469 @@ "templated": true } ] - }, - "offset": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for offset" + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - "limit": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "examples": { + "pending_verification": { + "summary": "Domain awaiting DNS verification", + "description": "A newly created domain whose DNS TXT record has not yet been confirmed. `health.code` is `202`; the `verify` link is present so the client can trigger or retry the check. `identity_providers` is absent because no policy can reference an unverified domain.", + "value": { + "domain_id": "dom-789", + "domain": "acme.corp", + "subscription_id": "sub-123", + "health": { + "code": "202", + "summary": "Verification pending", + "details": "Acquia is waiting to confirm the DNS TXT record. Ensure the record has been published and allow time for DNS propagation, then retry verification." + }, + "verification_record": { + "type": "TXT", + "host": "_acquia-challenge.acme.corp", + "value": "xyz789abc123", + "health": { + "code": "202", + "summary": "Check in progress", + "details": "The TXT record check has not yet completed." + } + }, + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sso-domains/dom-789" + }, + "verify": { + "href": "https://api.acquia.com/v3/sso-domains/dom-789/actions/verify" + } + } + } + }, + "failed_verification": { + "summary": "Domain verification failed — DNS record not found", + "description": "A domain whose TXT record could not be found. `health.code` is `404`; `details` names the exact record to check. The `verify` link is present so the client can retry after fixing the DNS entry.", + "value": { + "domain_id": "dom-789", + "domain": "acme.corp", + "subscription_id": "sub-123", + "health": { + "code": "404", + "summary": "Missing DNS record", + "details": "Acquia could not verify the presence of the required TXT DNS record at _acquia-challenge.acme.corp. Ensure the record is published with the correct value and retry verification." + }, + "verification_record": { + "type": "TXT", + "host": "_acquia-challenge.acme.corp", + "value": "xyz789abc123", + "health": { + "code": "404", + "summary": "Missing DNS record", + "details": "The TXT record at _acquia-challenge.acme.corp was not found or does not match the expected value xyz789abc123." + } + }, + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sso-domains/dom-789" + }, + "verify": { + "href": "https://api.acquia.com/v3/sso-domains/dom-789/actions/verify" + } + } + } + }, + "verified_in_use": { + "summary": "Verified domain referenced by an Identity Provider policy", + "description": "A verified domain enforced by at least one Identity Provider policy. `health.code` is `200`; `verify` is absent; `identity_providers` is present. A DELETE on this domain will return 409 until the domain is removed from all policies.", + "value": { + "domain_id": "dom-456", + "domain": "acme.com", + "subscription_id": "sub-123", + "health": { + "code": "200", + "summary": "Verified", + "details": "The DNS TXT record has been confirmed and the domain is verified." + }, + "verification_record": { + "type": "TXT", + "host": "_acquia-challenge.acme.com", + "value": "abc123def456", + "health": { + "code": "200", + "summary": "Verified", + "details": "The TXT record at _acquia-challenge.acme.com matches the expected value." + } + }, + "verified_at": "2026-04-15T10:30:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sso-domains/dom-456" + }, + "identity_providers": { + "href": "https://api.acquia.com/v3/identity-providers?filter=domain_id%3Ddom-456" + } + } + } + } + } + } + }, + "links": { + "self": { + "operationId": "findSsoDomainBySsoDomainId", + "parameters": { + "domainId": "$response.body#/domain_id" + } + }, + "delete": { + "operationId": "deleteSsoDomainBySsoDomainId", + "parameters": { + "domainId": "$response.body#/domain_id" + } + }, + "verify": { + "operationId": "verifySsoDomainBySsoDomainId", + "parameters": { + "domainId": "$response.body#/domain_id" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Federated_Authentication_API_BearerAuth": [] + } + ] + }, + "delete": { + "summary": "Delete a domain.", + "operationId": "deleteSsoDomainBySsoDomainId", + "tags": [ + "Domains" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "sso-domains:delete" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "identity-service" + } + }, + "parameters": [ + { + "name": "domainId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the domain." + } + ], + "responses": { + "202": { + "description": "Domain deletion accepted. The domain is being deleted.", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], "description": "The target URI of the link (can be a URI or URI template)" }, "templated": { @@ -121527,583 +121156,1096 @@ "templated": true } ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] } + }, + "required": [ + "self" ], - "description": "Templated link for limit" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] }, - "pagination": { + { "type": "object", "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "total", - "limit", - "offset" + "message" ] } - }, - "required": [ - "count", - "total", - "pagination" ] + }, + { + "type": "object", + "properties": { + "message": { + "const": "Domain deletion has been accepted." + } + } } - ], - "examples": [ + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sso-domains/dom-456" + } + }, + "message": "Domain deletion has been accepted." + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "type": "object", + "properties": { + "error": { + "type": "string" }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "message": { + "type": "string" } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "required": [ + "error", + "message" + ] }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "message": { + "type": "string", + "example": "You do not have permission to perform this action." } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "required": [ + "error", + "message" + ] }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "message": { + "type": "string" } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "required": [ + "error", + "message" + ] } ] }, - { - "type": "object", - "properties": { - "_embedded": { + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { "type": "object", "properties": { - "items": { - "type": "array", - "items": { - "allOf": [ - { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 1, - "description": "The unique identifier of the custom security rule." - }, - "display_name": { - "type": "string", - "description": "The display name of the custom security rule." - }, - "action": { - "type": "string", - "enum": [ - "block", - "allow", - "alert" - ], - "description": "The action applied when the rule matches." - }, - "priority": { - "type": "integer", - "minimum": 1, - "description": "The priority order for the rule. Lower values are evaluated first.\nPriorities must be unique within a subscription — creating or\nupdating a rule with a priority already in use replaces the\nexisting rule at that priority.\n" - }, - "domains": { - "type": "array", - "description": "The domains the rule applies to.", - "items": { - "type": "string", - "description": "A domain name." - } - }, - "paths": { - "type": "array", - "description": "The paths the rule applies to.", - "items": { - "type": "string", - "description": "A path pattern." - } - }, - "mapped_domains_count": { - "type": "integer", - "description": "The number of domains the rule is mapped to." - }, - "targets": { - "type": "array", - "description": "Conditions that must match for the rule to fire.", - "items": { - "oneOf": [ - { - "description": "Range match for IP or ASN ranges.", - "type": "object", - "required": [ - "attribute", - "criteria", - "value" - ], - "additionalProperties": false, - "properties": { - "attribute": { - "type": "string", - "description": "The request attribute the rule inspects.", - "enum": [ - "source-ip", - "asn" - ] - }, - "criteria": { - "type": "string", - "description": "How `value` is compared against `attribute`.", - "enum": [ - "range" - ] - }, - "value": { - "type": "object", - "description": "Range bounds for IP or ASN ranges.", - "additionalProperties": false, - "required": [ - "from", - "to" - ], - "properties": { - "from": { - "type": "string", - "description": "The start of the range." - }, - "to": { - "type": "string", - "description": "The end of the range." - } - } - } - } - }, - { - "description": "Value-list match for non-header, non-query attributes.", - "type": "object", - "required": [ - "attribute", - "criteria", - "value" - ], - "additionalProperties": false, - "properties": { - "attribute": { - "type": "string", - "description": "The request attribute the rule inspects.", - "enum": [ - "source-ip", - "country", - "method", - "path", - "asn" - ] - }, - "criteria": { - "type": "string", - "description": "How `value` is compared against `attribute`.", - "enum": [ - "equals", - "contains", - "regex" - ] - }, - "value": { - "type": "object", - "description": "A list of candidate values combined with OR.", - "additionalProperties": false, - "required": [ - "values" - ], - "properties": { - "values": { - "type": "array", - "description": "The list of values.", - "items": { - "type": "string", - "description": "A value." - } - } - } - } - } + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Federated_Authentication_API_BearerAuth": [] + } + ] + } + }, + "/sso-domains/{domainId}/actions/verify": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "post": { + "summary": "Verify domain ownership via DNS TXT record.", + "operationId": "verifySsoDomainBySsoDomainId", + "tags": [ + "Domains" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "sso-domains:verify" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "identity-service" + } + }, + "parameters": [ + { + "name": "domainId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the domain." + } + ], + "responses": { + "202": { + "description": "Domain verification process initiated. The system will validate the DNS TXT record to confirm domain ownership. Poll the domain resource and check `health.code` to track progress: `202` in progress, `200` verified, `404` record not found.", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" }, { - "description": "Key-value match for header or query-string attributes.", - "type": "object", - "required": [ - "attribute", - "criteria", - "value" - ], - "additionalProperties": false, - "properties": { - "attribute": { - "type": "string", - "description": "The request attribute the rule inspects.", - "enum": [ - "header", - "query-string" - ] - }, - "criteria": { - "type": "string", - "description": "How `value` is compared against `attribute`.", - "enum": [ - "equals", - "contains", - "regex" - ] - }, - "value": { - "type": "object", - "description": "Key-value matchers for header or query-string attributes.", - "additionalProperties": false, - "required": [ - "key_value_pairs" - ], - "properties": { - "key_value_pairs": { - "type": "array", - "description": "The list of key-value pairs.", - "items": { - "type": "object", - "description": "A key-value pair.", - "required": [ - "key", - "value" - ], - "properties": { - "key": { - "type": "string", - "description": "The header or query-parameter name." - }, - "value": { - "type": "string", - "description": "The expected value." - } - } - } - } - } - } - } + "format": "uri-template" } - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, - "created_at": { + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was created." + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - "updated_at": { + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was last updated." + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "id", - "display_name", - "action", - "priority", - "domains", - "paths", - "created_at", - "updated_at", - "targets" + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Domain verification has been accepted.", + "description": "Confirmation message" + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sso-domains/dom-456" + } + }, + "message": "Domain verification has been accepted." + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Federated_Authentication_API_BearerAuth": [] + } + ] + } + }, + "/identity-providers": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Return a list of all accessible Identity Providers.", + "operationId": "getIdentityProviders", + "tags": [ + "Identity Providers" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "identity-providers:list" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "identity-service" + } + }, + "parameters": [ + { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" + }, + { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "status=active;type=standard" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - { + "required": [ + "self" + ], + "additionalProperties": { "type": "object", + "description": "HAL link object", "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" } - }, - "required": [ - "self" ], - "additionalProperties": { + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { "type": "object", "description": "HAL link object", "properties": { @@ -122162,1168 +122304,877 @@ ] } }, - "_embedded": { + "required": [ + "self" + ], + "additionalProperties": { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } }, - "required": [ - "_links" - ] - } - ] - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - "examples": { - "custom_rules_response": { - "summary": "Custom rules collection with pagination", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules?limit=2{&offset}", - "templated": true - } - }, - "count": 2, - "total": 5, - "pagination": { - "total": 5, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": 301, - "display_name": "Block bad bots", - "action": "block", - "priority": 1, - "domains": [ - "example.com" - ], - "paths": [ - "/api/*" - ], - "targets": [ - { - "attribute": "source-ip", - "criteria": "range", - "value": { - "from": "10.0.0.0", - "to": "10.0.0.255" - } - } - ], - "created_at": "2026-05-01T12:00:00Z", - "updated_at": "2026-05-10T09:30:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/301" - } - } - }, - { - "id": 302, - "display_name": "Alert login scans", - "action": "alert", - "priority": 2, - "domains": [ - "shop.example.com" - ], - "paths": [ - "/login" - ], - "targets": [ - { - "attribute": "path", - "criteria": "equals", - "value": { - "values": [ - "/login" - ] - } - } - ], - "created_at": "2026-05-02T08:15:00Z", - "updated_at": "2026-05-11T13:45:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/302" - } - } - } - ] - } - } - } - } - } - } - }, - "CDN_API_CustomRule": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 1, - "description": "The unique identifier of the custom security rule." - }, - "display_name": { - "type": "string", - "description": "The display name of the custom security rule." - }, - "action": { - "type": "string", - "enum": [ - "block", - "allow", - "alert" - ], - "description": "The action applied when the rule matches." - }, - "priority": { - "type": "integer", - "minimum": 1, - "description": "The priority order for the rule. Lower values are evaluated first.\nPriorities must be unique within a subscription — creating or\nupdating a rule with a priority already in use replaces the\nexisting rule at that priority.\n" - }, - "domains": { - "type": "array", - "description": "The domains the rule applies to.", - "items": { - "type": "string", - "description": "A domain name." - } - }, - "paths": { - "type": "array", - "description": "The paths the rule applies to.", - "items": { - "type": "string", - "description": "A path pattern." - } - }, - "mapped_domains_count": { - "type": "integer", - "description": "The number of domains the rule is mapped to." - }, - "targets": { - "type": "array", - "description": "Conditions that must match for the rule to fire.", - "items": { - "oneOf": [ - { - "description": "Range match for IP or ASN ranges.", - "type": "object", - "required": [ - "attribute", - "criteria", - "value" - ], - "additionalProperties": false, - "properties": { - "attribute": { - "type": "string", - "description": "The request attribute the rule inspects.", - "enum": [ - "source-ip", - "asn" - ] - }, - "criteria": { - "type": "string", - "description": "How `value` is compared against `attribute`.", - "enum": [ - "range" - ] - }, - "value": { - "type": "object", - "description": "Range bounds for IP or ASN ranges.", - "additionalProperties": false, - "required": [ - "from", - "to" - ], - "properties": { - "from": { - "type": "string", - "description": "The start of the range." - }, - "to": { - "type": "string", - "description": "The end of the range." - } + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } - } - } - }, - { - "description": "Value-list match for non-header, non-query attributes.", - "type": "object", - "required": [ - "attribute", - "criteria", - "value" - ], - "additionalProperties": false, - "properties": { - "attribute": { - "type": "string", - "description": "The request attribute the rule inspects.", - "enum": [ - "source-ip", - "country", - "method", - "path", - "asn" - ] - }, - "criteria": { - "type": "string", - "description": "How `value` is compared against `attribute`.", - "enum": [ - "equals", - "contains", - "regex" - ] }, - "value": { - "type": "object", - "description": "A list of candidate values combined with OR.", - "additionalProperties": false, - "required": [ - "values" - ], - "properties": { - "values": { - "type": "array", - "description": "The list of values.", + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { "items": { - "type": "string", - "description": "A value." + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } } - } + }, + "required": [ + "items" + ] } - } - } - }, - { - "description": "Key-value match for header or query-string attributes.", - "type": "object", - "required": [ - "attribute", - "criteria", - "value" - ], - "additionalProperties": false, - "properties": { - "attribute": { - "type": "string", - "description": "The request attribute the rule inspects.", - "enum": [ - "header", - "query-string" - ] - }, - "criteria": { - "type": "string", - "description": "How `value` is compared against `attribute`.", - "enum": [ - "equals", - "contains", - "regex" - ] }, - "value": { - "type": "object", - "description": "Key-value matchers for header or query-string attributes.", - "additionalProperties": false, - "required": [ - "key_value_pairs" - ], - "properties": { - "key_value_pairs": { - "type": "array", - "description": "The list of key-value pairs.", - "items": { + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "offset": { + "allOf": [ + { "type": "object", - "description": "A key-value pair.", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, "required": [ - "key", - "value" + "href" ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", "properties": { - "key": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { "type": "string", - "description": "The header or query-parameter name." + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - "value": { + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { "type": "string", - "description": "The expected value." + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } - } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] } - } + ], + "description": "Templated link for limit" } - } - } - } - ] - } - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was created." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was last updated." - } - }, - "required": [ - "id", - "display_name", - "action", - "priority", - "domains", - "paths", - "created_at", - "updated_at", - "targets" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" + "count": { + "type": "integer", + "description": "The number of items in the current page" }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" + "total": { + "type": "integer", + "description": "The total number of items available" }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] + } + }, + "required": [ + "count", + "total", + "pagination" + ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" }, - { + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { "href": "https://api.acquia.com/v3/resources{?offset}", "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ { - "format": "uri" + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } }, { - "format": "uri-template" + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] } - ] - } + } + ] }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - }, - "example": { - "id": 301, - "display_name": "Block bad bots", - "action": "block", - "priority": 1, - "domains": [ - "example.com" - ], - "paths": [ - "/api/*" - ], - "targets": [ - { - "attribute": "source-ip", - "criteria": "range", - "value": { - "from": "10.0.0.0", - "to": "10.0.0.255" - } - }, - { - "attribute": "header", - "criteria": "equals", - "value": { - "key_value_pairs": [ - { - "key": "User-Agent", - "value": "BadBot/1.0" - } - ] - } - } - ], - "created_at": "2026-05-01T12:00:00Z", - "updated_at": "2026-05-10T09:30:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/301" - } - } - } - } - }, - "links": { - "self": { - "operationId": "findCustomRuleBySubscriptionUuidAndCustomRuleId", - "parameters": { - "subscriptionUuid": "$request.path.subscriptionUuid", - "customRuleId": "$request.path.customRuleId" - } - } - } - }, - "CDN_API_CustomRuleCreated": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { + "allOf": [ + { + "allOf": [ + { "type": "object", - "description": "HAL link object", "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "The custom security rule has been created.", - "description": "Confirmation message" - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/301" - } - }, - "message": "The custom security rule has been created." - } - } - } - }, - "CDN_API_CustomRuleDeleted": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } + "required": [ + "self" ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } + "_links" ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "The custom security rule has been deleted.", - "description": "Confirmation message" - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/301" - } - }, - "message": "The custom security rule has been deleted." - } - } - } - }, - "CDN_API_RateLimitingRuleCollection": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { + { "type": "object", - "description": "HAL link object", "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + }, + "required": [ + "items" + ] } }, "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } + "_embedded" ] } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "allOf": [ - { - "allOf": [ + }, { "type": "object", "properties": { "_links": { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + ] }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] } - ] + ], + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" } }, - "required": [ - "self" - ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -123382,637 +123233,331 @@ } ] } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true } }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" } } }, - "required": [ - "items" - ] + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true } }, - "required": [ - "_embedded" - ] + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } } ] }, { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "prev": { - "description": "Link to the previous page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "next": { - "description": "Link to the next page (templated)", + "allOf": [ + { + "allOf": [ + { "type": "object", "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "offset": { - "allOf": [ - { + "_links": { "type": "object", - "description": "HAL link object", + "description": "HAL links for the resource", "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for offset" - }, - "limit": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, "required": [ - "href" + "self" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - { + "_embedded": { "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } } }, "required": [ - "templated" + "items" ] } - ], - "description": "Templated link for limit" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { - "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" + "required": [ + "_embedded" + ] } - }, - "required": [ - "total", - "limit", - "offset" ] - } - }, - "required": [ - "count", - "total", - "pagination" - ] - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 - }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - } - ] - }, - { - "allOf": [ - { - "allOf": [ { "type": "object", "properties": { "_links": { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "sort": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + ] }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] } - ] + ], + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" } }, - "required": [ - "self" - ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -124071,259 +123616,1106 @@ } ] } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", + "templated": true } }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" } } }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } } ] }, { "type": "object", "properties": { - "_links": { + "_embedded": { "type": "object", "properties": { - "filter": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "items": { + "type": "array", + "items": { + "allOf": [ { - "format": "uri" + "type": "object", + "properties": { + "identity_provider_id": { + "type": "string", + "description": "Unique identifier for the identity provider." + }, + "label": { + "type": "string", + "description": "The name of the Identity Provider." + }, + "subscription_id": { + "type": "string", + "description": "Unique identifier for the subscription that the Identity Provider belongs to." + }, + "idp_entity_id": { + "type": "string", + "format": "uri", + "description": "The Identity Provider Entity ID." + }, + "sp_entity_id": { + "type": "string", + "format": "uri", + "description": "The Service Provider Entity ID." + }, + "sso_url": { + "type": "string", + "format": "uri", + "description": "The Single Sign-On URL for the Identity Provider." + }, + "certificate": { + "type": "string", + "description": "The X.509 certificate used for SAML authentication." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Timestamp when the Identity Provider was created." + } + }, + "required": [ + "identity_provider_id", + "label", + "subscription_id", + "idp_entity_id", + "sp_entity_id", + "sso_url", + "certificate", + "created_at" + ] }, { - "format": "uri-template" + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + ] } - ] - } + } + }, + "required": [ + "items" + ] } - } + }, + "required": [ + "_embedded" + ] } - ], - "examples": [ - { + ] + }, + "examples": { + "identity_provider_response": { + "summary": "Identity provider collection with pagination", + "value": { "_links": { "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?limit=2&offset=2" + }, + "limit": { + "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?offset=2{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?limit=2{&offset}", + "templated": true }, "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", + "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?limit=2&offset=2{&filter}", + "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?limit=2&offset=2{&sort}", "templated": true + }, + "prev": { + "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?limit=2&offset=0" + }, + "next": { + "href": "https://api.acquia.com/v3/subscriptions/sub-123/identity-providers?offset=4&limit=2" } }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, "_embedded": { "items": [ { - "id": "1", - "name": "Resource 1", + "identity_provider_id": "908914ec-2354-4fb1-9298-637247eccc3a", + "label": "Acme Corporation Azure AD", + "subscription_id": "sub-123", + "idp_entity_id": "https://idp.acme.com/saml", + "sp_entity_id": "https://sp.acme.com/saml", + "sso_url": "https://acme.com/sso", + "certificate": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----", + "created_at": "2026-04-15T11:00:00Z", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/1" + "href": "https://api.acquia.com/v3/identity-providers/908914ec-2354-4fb1-9298-637247eccc3a" + }, + "sso_policy": { + "href": "https://api.acquia.com/v3/identity-providers/908914ec-2354-4fb1-9298-637247eccc3a/policies/sso" } } }, { - "id": "2", - "name": "Resource 2", + "identity_provider_id": "123456ec-2354-4fb1-9298-637247eccc3b", + "label": "Acme Research Ping Identity", + "subscription_id": "sub-123", + "idp_entity_id": "https://idp-research.acme.com/saml", + "sp_entity_id": "https://sp-research.acme.com/saml", + "sso_url": "https://research.acme.com/sso", + "certificate": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----", + "created_at": "2026-04-20T14:20:00Z", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/2" + "href": "https://api.acquia.com/v3/identity-providers/123456ec-2354-4fb1-9298-637247eccc3b" + }, + "sso_policy": { + "href": "https://api.acquia.com/v3/identity-providers/123456ec-2354-4fb1-9298-637247eccc3b/policies/sso" } } } ] } + } + } + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true + "message": { + "type": "string", + "const": "You do not have permission to access this resource." } }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" - } + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Federated_Authentication_API_BearerAuth": [] + } + ] + } + }, + "/identity-providers/{identityProviderId}": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "get": { + "summary": "Return details about a specific Identity Provider.", + "operationId": "findIdentityProviderByIdentityProviderId", + "tags": [ + "Identity Providers" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "identity-providers:find" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "identity-service" + } + }, + "parameters": [ + { + "name": "identityProviderId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the identity provider." + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "identity_provider_id": { + "type": "string", + "description": "Unique identifier for the identity provider." + }, + "label": { + "type": "string", + "description": "The name of the Identity Provider." + }, + "subscription_id": { + "type": "string", + "description": "Unique identifier for the subscription that the Identity Provider belongs to." + }, + "idp_entity_id": { + "type": "string", + "format": "uri", + "description": "The Identity Provider Entity ID." + }, + "sp_entity_id": { + "type": "string", + "format": "uri", + "description": "The Service Provider Entity ID." + }, + "sso_url": { + "type": "string", + "format": "uri", + "description": "The Single Sign-On URL for the Identity Provider." + }, + "certificate": { + "type": "string", + "description": "The X.509 certificate used for SAML authentication." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Timestamp when the Identity Provider was created." + } + }, + "required": [ + "identity_provider_id", + "label", + "subscription_id", + "idp_entity_id", + "sp_entity_id", + "sso_url", + "certificate", + "created_at" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } - } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } - ] - } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] } ] }, - { + "example": { + "identity_provider_id": "908914ec-2354-4fb1-9298-637247eccc3a", + "label": "Acme Corporation Azure AD", + "subscription_id": "sub-123", + "idp_entity_id": "https://idp.acme.com/saml", + "sp_entity_id": "https://sp.acme.com/saml", + "sso_url": "https://acme.com/sso", + "certificate": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----", + "created_at": "2026-04-15T11:00:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/identity-providers/908914ec-2354-4fb1-9298-637247eccc3a" + }, + "sso_policy": { + "href": "https://api.acquia.com/v3/identity-providers/908914ec-2354-4fb1-9298-637247eccc3a/policies/sso" + } + } + } + } + }, + "links": { + "self": { + "operationId": "findIdentityProviderByIdentityProviderId", + "parameters": { + "identityProviderId": "$response.body#/identity_provider_id" + } + }, + "update": { + "operationId": "updateIdentityProviderByIdentityProviderId", + "parameters": { + "identityProviderId": "$response.body#/identity_provider_id" + } + }, + "delete": { + "operationId": "deleteIdentityProviderByIdentityProviderId", + "parameters": { + "identityProviderId": "$response.body#/identity_provider_id" + } + }, + "enable_sso_policy": { + "operationId": "enableIdentityProviderSSOPolicyByIdentityProviderId", + "parameters": { + "identityProviderId": "$response.body#/identity_provider_id" + } + }, + "disable_sso_policy": { + "operationId": "disableIdentityProviderSSOPolicyByIdentityProviderId", + "parameters": { + "identityProviderId": "$response.body#/identity_provider_id" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Federated_Authentication_API_BearerAuth": [] + } + ] + }, + "put": { + "summary": "Updates an Identity Provider.", + "operationId": "updateIdentityProviderByIdentityProviderId", + "tags": [ + "Identity Providers" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "identity-providers:update" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "identity-service" + } + }, + "parameters": [ + { + "name": "identityProviderId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the identity provider." + } + ], + "requestBody": { + "description": "Request body for updating an existing Identity Provider.", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "label": { + "type": "string", + "description": "The name of the Identity Provider." + }, + "certificate": { + "type": "string", + "description": "The X.509 certificate used for SAML authentication." + }, + "sso_url": { + "type": "string", + "format": "uri", + "description": "The Single Sign-On URL for the Identity Provider." + }, + "idp_entity_id": { + "type": "string", + "format": "uri", + "description": "The Identity Provider Entity ID." + } + }, + "additionalProperties": false, + "minProperties": 1 + }, + "example": { + "label": "Updated Acme Corporation Azure AD", + "certificate": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----", + "sso_url": "https://updatedacme.com/sso", + "idp_entity_id": "https://idp2.acme.com/saml" + } + } + } + }, + "responses": { + "202": { + "description": "Identity Provider update initiated. The Identity Provider configuration changes are being applied. Poll the Identity Provider resource to verify the changes.", + "content": { + "application/hal+json": { + "schema": { "allOf": [ { "allOf": [ @@ -124468,25 +124860,13 @@ { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "_embedded" + "message" ] } ] @@ -124494,1272 +124874,1105 @@ { "type": "object", "properties": { - "_links": { - "type": "object", - "properties": { - "sort": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" - }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", - "templated": true + "message": { + "const": "Identity Provider update has been accepted." } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] } } ] }, - { + "example": { + "message": "Identity Provider update has been accepted.", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/identity-providers/9078ead6-dfc9-4868-8800-723fb6da706f" + } + } + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "type": "object", "properties": { - "_embedded": { + "error": { + "type": "string" + }, + "message": { "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "allOf": [ - { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 1, - "description": "The unique identifier of the rate limiting rule." - }, - "display_name": { - "type": "string", - "description": "The display name of the rate limiting rule." - }, - "action": { - "type": "string", - "enum": [ - "block", - "alert" - ], - "description": "The action applied when the rule matches." - }, - "rate_limit_per_minute": { - "type": "string", - "enum": [ - "lenient", - "moderate", - "strict" - ], - "description": "The rate limit category applied to the rule." - }, - "domains": { - "type": "array", - "description": "The domains the rule applies to.", - "items": { - "type": "string", - "description": "A domain name." - } - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was created." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was last updated." - } - }, - "required": [ - "id", - "display_name", - "action", - "rate_limit_per_minute", - "domains", - "created_at", - "updated_at" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - } - } + "additionalProperties": { + "type": "string" }, - "required": [ - "items" - ] + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } } }, "required": [ - "_embedded" + "error", + "message" ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } } - ] - }, - "examples": { - "rate_limiting_rules_response": { - "summary": "Rate limiting rules collection with pagination", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?limit=2{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?limit=2&offset=0{&filter}", - "templated": true - }, - "sort": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?limit=2&offset=0{&sort}", - "templated": true - }, - "next": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?limit=2&offset=2" - } - }, - "count": 2, - "total": 4, - "pagination": { - "total": 4, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": 501, - "display_name": "Rate Rule 1", - "action": "alert", - "rate_limit_per_minute": "lenient", - "domains": [ - "example.com" - ], - "created_at": "2026-05-01T12:00:00Z", - "updated_at": "2026-05-10T09:30:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/501" - } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" } }, - { - "id": 502, - "display_name": "Rate Rule 2", - "action": "block", - "rate_limit_per_minute": "strict", - "domains": [ - "shop.example.com" - ], - "created_at": "2026-05-02T08:15:00Z", - "updated_at": "2026-05-11T13:45:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/502" - } + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." } - } - ] - } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." } } } - } - } - }, - "CDN_API_RateLimitingRule": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 1, - "description": "The unique identifier of the rate limiting rule." - }, - "display_name": { - "type": "string", - "description": "The display name of the rate limiting rule." - }, - "action": { - "type": "string", - "enum": [ - "block", - "alert" - ], - "description": "The action applied when the rule matches." - }, - "rate_limit_per_minute": { - "type": "string", - "enum": [ - "lenient", - "moderate", - "strict" - ], - "description": "The rate limit category applied to the rule." - }, - "domains": { - "type": "array", - "description": "The domains the rule applies to.", - "items": { - "type": "string", - "description": "A domain name." - } - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was created." + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] }, - "updated_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was last updated." + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] } - }, - "required": [ - "id", - "display_name", - "action", - "rate_limit_per_minute", - "domains", - "created_at", - "updated_at" ] }, - { - "type": "object", - "properties": { - "_links": { + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "error": { + "type": "string" + }, + "message": { + "type": "string" } }, "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "error", + "message" + ] }, - "_embedded": { + { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] } - }, - "required": [ - "_links" ] - } - ] - }, - "example": { - "id": 501, - "display_name": "Rate Rule 1", - "action": "alert", - "rate_limit_per_minute": "lenient", - "domains": [ - "example.com" - ], - "created_at": "2026-05-01T12:00:00Z", - "updated_at": "2026-05-10T09:30:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/501" + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." } } } - } - }, - "links": { - "self": { - "operationId": "findRateLimitingRuleBySubscriptionUuidAndRateLimitingRuleId", - "parameters": { - "subscriptionUuid": "$request.path.subscriptionUuid", - "rateLimitingRuleId": "$request.path.rateLimitingRuleId" - } - } - } - }, - "CDN_API_RateLimitingRuleCreated": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { "allOf": [ { "type": "object", "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "error": { + "type": "string" }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "message": { + "type": "string" } }, "required": [ - "_links" + "error", + "message" ] }, { "type": "object", "properties": { + "error": { + "type": "string", + "const": "conflict" + }, "message": { "type": "string", - "description": "The message content" + "example": "The requested operation is invalid or cannot be completed." } }, "required": [ + "error", "message" ] } ] }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "The rate limiting rule has been created.", - "description": "Confirmation message" - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/501" + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." } - }, - "message": "The rate limiting rule has been created." + } } - } - } - }, - "CDN_API_RateLimitingRuleUpdated": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { "allOf": [ { "type": "object", "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "error": { + "type": "string" }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "message": { + "type": "string" } }, "required": [ - "_links" + "error", + "message" ] }, { "type": "object", "properties": { + "error": { + "type": "string", + "const": "system" + }, "message": { "type": "string", - "description": "The message content" + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." } }, "required": [ + "error", "message" ] } ] }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "The rate limiting rule has been updated.", - "description": "Confirmation message" - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/501" + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." } - }, - "message": "The rate limiting rule has been updated." + } } } - } + }, + "security": [ + { + "Federated_Authentication_API_BearerAuth": [] + } + ] }, - "CDN_API_RateLimitingRuleDeleted": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "delete": { + "summary": "Deletes an Identity Provider.", + "operationId": "deleteIdentityProviderByIdentityProviderId", + "tags": [ + "Identity Providers" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "identity-providers:delete" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "identity-service" + } + }, + "parameters": [ + { + "name": "identityProviderId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the identity provider." + } + ], + "responses": { + "202": { + "description": "Identity Provider deletion accepted. The Identity Provider is being deleted.", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, "required": [ - "href" + "self" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] }, - "_embedded": { + { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "const": "Identity Provider deletion has been accepted." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/identity-providers/9078ead6-dfc9-4868-8800-723fb6da706f" + } + }, + "message": "Identity Provider deletion has been accepted." + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" } }, "required": [ - "_links" + "error", + "message" ] }, { "type": "object", "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, "message": { "type": "string", - "description": "The message content" + "const": "You do not have permission to access this resource." } }, "required": [ + "error", "message" ] } ] }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "The rate limiting rule has been deleted.", - "description": "Confirmation message" + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] } - } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/501" + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." } - }, - "message": "The rate limiting rule has been deleted." + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } } } + }, + "security": [ + { + "Federated_Authentication_API_BearerAuth": [] + } + ] + } + }, + "/identity-providers/{identityProviderId}/policies/sso": { + "servers": [ + { + "url": "https://api.acquia.com/v3" } - }, - "CDN_API_CustomRuleUpdated": { - "description": "OK", - "content": { - "application/hal+json": { + ], + "get": { + "summary": "Get the SSO policy for an Identity Provider.", + "operationId": "findIdentityProviderSSOPolicyByIdentityProviderId", + "tags": [ + "Identity Providers" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "identity-providers:find-sso-policy" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "identity-service" + } + }, + "parameters": [ + { + "name": "identityProviderId", + "in": "path", + "required": true, "schema": { - "allOf": [ - { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the identity provider." + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { "allOf": [ + { + "type": "object", + "description": "SSO policy that enforces an Identity Provider for specific domains.", + "properties": { + "status": { + "type": "string", + "enum": [ + "enabled", + "disabled" + ], + "default": "disabled", + "description": "The status of the SSO policy. When enabled, the policy enforces SSO for the specified domains. Defaults to disabled on creation." + }, + "_embedded": { + "type": "object", + "description": "Embedded resources for the SSO policy.", + "properties": { + "domains": { + "type": "array", + "description": "The SSO domains enforced by this policy, each with a self link back to the authoritative SsoDomain resource.", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "domain_id": { + "type": "string", + "description": "Unique identifier for the domain." + }, + "domain": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z]{2,})+$", + "description": "The domain name (e.g., \"acme.com\")." + }, + "subscription_id": { + "type": "string", + "description": "Unique identifier for the subscription that the domain belongs to." + }, + "health": { + "type": "object", + "description": "The overall verification health of the domain. Uses the same code semantics as the platform email domain-verification system: `200` verified, `202` verification pending or in progress, `404` DNS record not found or could not be validated.", + "properties": { + "code": { + "type": "string", + "enum": [ + "200", + "202", + "404" + ], + "description": "Machine-readable verification status code. `200` — verified. `202` — verification pending or in progress; retry after propagation. `404` — DNS TXT record not found or does not match expected value." + }, + "summary": { + "type": "string", + "description": "Short human-readable label for the verification state (e.g., \"Verified\", \"Verification pending\", \"Missing DNS record\")." + }, + "details": { + "type": "string", + "description": "Actionable explanation of the current state. For `404`, describes what was checked and what the customer should do next." + } + }, + "required": [ + "code", + "summary", + "details" + ] + }, + "verification_record": { + "type": "object", + "description": "DNS TXT record the customer must publish to verify domain ownership.", + "properties": { + "type": { + "type": "string", + "const": "TXT", + "description": "DNS record type." + }, + "host": { + "type": "string", + "description": "DNS record host name." + }, + "value": { + "type": "string", + "description": "Expected DNS record value." + }, + "health": { + "type": "object", + "description": "Verification health specific to this DNS record. Anchors the failure reason to the exact record the customer needs to fix, matching the per-record health pattern used in platform email domain verification.", + "properties": { + "code": { + "type": "string", + "enum": [ + "200", + "202", + "404" + ], + "description": "`200` — record found and value matches. `202` — check in progress. `404` — record not found or value does not match." + }, + "summary": { + "type": "string", + "description": "Short human-readable label for this record's verification state." + }, + "details": { + "type": "string", + "description": "Actionable explanation; for `404`, states what was checked and what to fix." + } + }, + "required": [ + "code", + "summary", + "details" + ] + } + }, + "required": [ + "type", + "host", + "value", + "health" + ] + }, + "verified_at": { + "type": "string", + "format": "date-time", + "description": "Timestamp when the domain was successfully verified. Present only when `health.code` is `200`." + } + }, + "required": [ + "domain_id", + "domain", + "subscription_id", + "health", + "verification_record" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + }, + "required": [ + "domains" + ] + } + }, + "required": [ + "status", + "_embedded" + ] + }, { "type": "object", "properties": { @@ -125897,490 +126110,354 @@ "required": [ "_links" ] + } + ] + }, + "example": { + "status": "disabled", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/identity-providers/9078ead6-dfc9-4868-8800-723fb6da706f/policies/sso" + } + }, + "_embedded": { + "domains": [ + { + "domain_id": "dom-456", + "domain": "acme.com", + "subscription_id": "sub-123", + "health": { + "code": "200", + "summary": "Verified", + "details": "The DNS TXT record has been confirmed and the domain is verified." + }, + "verification_record": { + "type": "TXT", + "host": "_acquia-challenge.acme.com", + "value": "abc123def456", + "health": { + "code": "200", + "summary": "Verified", + "details": "The TXT record at _acquia-challenge.acme.com matches the expected value." + } + }, + "verified_at": "2026-04-15T10:30:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sso-domains/dom-456" + }, + "identity_providers": { + "href": "https://api.acquia.com/v3/identity-providers?filter=domain_id%3Ddom-456" + } + } + }, + { + "domain_id": "dom-789", + "domain": "acme.corp", + "subscription_id": "sub-123", + "health": { + "code": "200", + "summary": "Verified", + "details": "The DNS TXT record has been confirmed and the domain is verified." + }, + "verification_record": { + "type": "TXT", + "host": "_acquia-challenge.acme.corp", + "value": "xyz789abc123", + "health": { + "code": "200", + "summary": "Verified", + "details": "The TXT record at _acquia-challenge.acme.corp matches the expected value." + } + }, + "verified_at": "2026-04-20T09:00:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sso-domains/dom-789" + }, + "identity_providers": { + "href": "https://api.acquia.com/v3/identity-providers?filter=domain_id%3Ddom-789" + } + } + } + ] + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] }, { "type": "object", "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, "message": { "type": "string", - "description": "The message content" + "const": "You do not have permission to access this resource." } }, "required": [ + "error", "message" ] } ] }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "The custom security rule has been updated.", - "description": "Confirmation message" - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/301" + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." } - }, - "message": "The custom security rule has been updated." + } } - } - } - }, - "Environment_Service_API_ForbiddenError": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "Environment_Service_API_InternalServerError": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - }, - "Environment_Service_API_NotFoundError": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "Environment_Service_API_UnauthorizedError": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] } - }, - "required": [ - "error", - "message" ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "Environment_Service_API_ValidationError": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." } - }, - "required": [ - "error", - "message" - ] - }, - "example": { - "error": "validation_failed", - "message": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." } } - } - } - }, - "Environment_Service_API_InvalidOperationError": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] }, - "message": { - "type": "string" + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] } - }, - "required": [ - "error", - "message" ] }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." + } } - } - } - }, - "Environment_Service_API_DeploymentCollection": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { "allOf": [ { "type": "object", "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "error": { + "type": "string" }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "message": { + "type": "string" } }, "required": [ - "_links" + "error", + "message" ] }, { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." } }, "required": [ - "_embedded" + "error", + "message" ] } ] }, - { + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Federated_Authentication_API_BearerAuth": [] + } + ] + }, + "post": { + "summary": "Create the SSO policy for an Identity Provider.", + "operationId": "createIdentityProviderSSOPolicyByIdentityProviderId", + "tags": [ + "Identity Providers" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "identity-providers:create-sso-policy" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "identity-service" + } + }, + "parameters": [ + { + "name": "identityProviderId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the identity provider." + } + ], + "requestBody": { + "description": "Request body for creating an SSO policy for an Identity Provider.", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "domain_ids": { + "type": "array", + "description": "List of verified domain IDs to enforce this Identity Provider for.", + "items": { + "type": "string", + "description": "Reference to a verified SSO domain." + } + } + }, + "required": [ + "domain_ids" + ], + "additionalProperties": false + }, + "example": { + "domain_ids": [ + "dom-456", + "dom-789" + ] + } + } + } + }, + "responses": { + "202": { + "description": "SSO policy creation initiated. The policy is being activated. Poll the SSO policy resource to verify activation.", + "content": { + "application/hal+json": { + "schema": { "allOf": [ { "allOf": [ @@ -126525,25 +126602,13 @@ { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "_embedded" + "message" ] } ] @@ -126551,142 +126616,404 @@ { "type": "object", "properties": { - "_links": { + "message": { + "const": "SSO policy creation has been accepted." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/identity-providers/9078ead6-dfc9-4868-8800-723fb6da706f/policies/sso" + } + }, + "message": "SSO policy creation has been accepted." + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Federated_Authentication_API_BearerAuth": [] + } + ] + }, + "put": { + "summary": "Update the SSO policy for an Identity Provider.", + "operationId": "updateIdentityProviderSSOPolicyByIdentityProviderId", + "tags": [ + "Identity Providers" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "identity-providers:update-sso-policy" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "identity-service" + } + }, + "parameters": [ + { + "name": "identityProviderId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the identity provider." + } + ], + "requestBody": { + "description": "Request body for updating an SSO policy for an Identity Provider.", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "domain_ids": { + "type": "array", + "description": "List of verified domain IDs to enforce this Identity Provider for.", + "items": { + "type": "string", + "description": "Reference to a verified SSO domain." + } + } + }, + "required": [ + "domain_ids" + ], + "additionalProperties": false, + "minProperties": 1 + }, + "example": { + "domain_ids": [ + "dom-456" + ] + } + } + } + }, + "responses": { + "202": { + "description": "SSO policy update initiated. The policy changes are being applied. Poll the SSO policy resource to verify the changes.", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { "type": "object", "properties": { - "prev": { - "description": "Link to the previous page (templated)", + "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "next": { - "description": "Link to the next page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "offset": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" }, "templated": { "type": "boolean", @@ -126729,347 +127056,439 @@ "templated": true } ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] } + }, + "required": [ + "self" ], - "description": "Templated link for offset" - }, - "limit": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for limit" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] }, - "pagination": { + { "type": "object", "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "total", - "limit", - "offset" + "message" ] } - }, - "required": [ - "count", - "total", - "pagination" ] + }, + { + "type": "object", + "properties": { + "message": { + "const": "SSO policy update has been accepted." + } + } } - ], - "examples": [ + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/identity-providers/9078ead6-dfc9-4868-8800-723fb6da706f/policies/sso" + } + }, + "message": "SSO policy update has been accepted." + } + } + } + }, + "400": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + "type": "object", + "properties": { + "error": { + "type": "string" }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "message": { + "type": "string", + "const": "You do not have permission to access this resource." } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "required": [ + "error", + "message" + ] }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "required": [ + "error", + "message" + ] }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "message": { + "type": "string" } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "required": [ + "error", + "message" + ] } ] }, - { + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Federated_Authentication_API_BearerAuth": [] + } + ] + }, + "delete": { + "summary": "Delete the SSO policy for an Identity Provider.", + "operationId": "deleteIdentityProviderSSOPolicyByIdentityProviderId", + "tags": [ + "Identity Providers" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "identity-providers:delete-sso-policy" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "identity-service" + } + }, + "parameters": [ + { + "name": "identityProviderId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the identity provider." + } + ], + "responses": { + "202": { + "description": "SSO policy deletion initiated. The policy is being deactivated. Poll the Identity Provider resource to verify the policy has been removed.", + "content": { + "application/hal+json": { + "schema": { "allOf": [ { "allOf": [ @@ -127214,25 +127633,13 @@ { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "_embedded" + "message" ] } ] @@ -127240,219 +127647,319 @@ { "type": "object", "properties": { - "_links": { - "type": "object", - "properties": { - "filter": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "message": { + "const": "SSO policy deletion has been accepted." } } } - ], - "examples": [ + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/identity-providers/9078ead6-dfc9-4868-8800-723fb6da706f/policies/sso" + } + }, + "message": "SSO policy deletion has been accepted." + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + "type": "object", + "properties": { + "error": { + "type": "string" }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true + "message": { + "type": "string" } }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } + "required": [ + "error", + "message" + ] }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true + "message": { + "type": "string", + "const": "You do not have permission to access this resource." } }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" - } - } - }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" - } - } - } - ] - } + "required": [ + "error", + "message" + ] } ] }, - { + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Federated_Authentication_API_BearerAuth": [] + } + ] + } + }, + "/identity-providers/{identityProviderId}/policies/sso/actions/enable": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "post": { + "summary": "Enable the SSO policy for an Identity Provider.", + "operationId": "enableIdentityProviderSSOPolicyByIdentityProviderId", + "tags": [ + "Identity Providers" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "identity-providers:enable-sso-policy" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "identity-service" + } + }, + "parameters": [ + { + "name": "identityProviderId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the identity provider." + } + ], + "responses": { + "202": { + "description": "SSO policy enablement initiated. The policy is being enabled and will enforce domains. Poll the SSO policy resource to verify the status change.", + "content": { + "application/hal+json": { + "schema": { "allOf": [ { "allOf": [ @@ -127597,25 +128104,13 @@ { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "_embedded" + "message" ] } ] @@ -127623,12 +128118,330 @@ { "type": "object", "properties": { - "_links": { + "message": { + "const": "SSO policy enablement has been accepted." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/identity-providers/9078ead6-dfc9-4868-8800-723fb6da706f/policies/sso" + } + }, + "message": "SSO policy enablement has been accepted." + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Federated_Authentication_API_BearerAuth": [] + } + ] + } + }, + "/identity-providers/{identityProviderId}/policies/sso/actions/disable": { + "servers": [ + { + "url": "https://api.acquia.com/v3" + } + ], + "post": { + "summary": "Disable the SSO policy for an Identity Provider.", + "operationId": "disableIdentityProviderSSOPolicyByIdentityProviderId", + "tags": [ + "Identity Providers" + ], + "x-acquia-exposure": { + "channels": { + "rest": { + "enabled": true + }, + "cli": { + "enabled": true, + "command": "identity-providers:disable-sso-policy" + } + }, + "stability": "development", + "audience": [ + "public" + ] + }, + "x-acquia-operation": { + "provider": { + "service": "identity-service" + } + }, + "parameters": [ + { + "name": "identityProviderId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the identity provider." + } + ], + "responses": { + "202": { + "description": "SSO policy disablement initiated. The policy is being disabled and will no longer enforce domains. Poll the SSO policy resource to verify the status change.", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { "type": "object", "properties": { - "sort": { - "allOf": [ - { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { "type": "object", "description": "HAL link object", "properties": { @@ -127685,1239 +128498,30892 @@ "templated": true } ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] } - ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" - }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - } - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "allOf": [ - { + "required": [ + "self" + ], + "additionalProperties": { "type": "object", - "description": "Deployment properties", + "description": "HAL link object", "properties": { - "id": { + "href": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the deployment." + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - "environment_id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Identifier of the environment this deployment belongs to." + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" }, - "status": { + "type": { "type": "string", - "description": "Current status of the deployment.", - "enum": [ - "waiting", - "received", - "started", - "done", - "failed", - "error", - "killed" - ] + "description": "Hint about the media type expected when dereferencing the target resource" }, - "code_reference": { + "deprecation": { "type": "string", - "description": "The code reference (e.g. branch or tag) deployed." - }, - "run_hooks": { - "type": "boolean", - "description": "Whether deployment hooks were run." - }, - "hooks_argument": { - "type": [ - "string", - "null" - ], - "description": "Additional arguments passed to deployment hooks." + "description": "A URL to a resource that provides deprecation information" }, - "created_at": { + "name": { "type": "string", - "format": "date-time", - "description": "Timestamp when the deployment was created." - }, - "started_at": { - "type": [ - "string", - "null" - ], - "format": "date-time", - "description": "Timestamp when the deployment started." + "description": "A secondary key for selecting links" }, - "completed_at": { - "type": [ - "string", - "null" - ], - "format": "date-time", - "description": "Timestamp when the deployment completed." + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" }, - "sender_id": { - "type": [ - "string", - "null" - ], - "description": "Identifier of the user or system that initiated the deployment." + "title": { + "type": "string", + "description": "A human-readable identifier for the link" }, - "logs": { - "type": [ - "string", - "null" - ], - "description": "Deployment log output." + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "id", - "environment_id", - "status", - "code_reference", - "run_hooks", - "created_at" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - }, - "required": [ - "_links" ] } - ] - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - "examples": { - "deployment_response": { - "summary": "Deployment collection with pagination", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2&offset=2" - }, - "limit": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?offset=2{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2&offset=2{&filter}", - "templated": true - }, - "sort": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2&offset=2{&sort}", - "templated": true - }, - "prev": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2&offset=0" - }, - "next": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2&offset=4" - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "e0c9dff7-56b6-4c0d-bad0-0e6593f66cd3", - "environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", - "status": "done", - "code_reference": "tags/v1.0.0", - "run_hooks": true, - "hooks_argument": null, - "sender_id": null, - "created_at": "2025-04-01T13:01:06.603Z", - "started_at": "2025-04-01T13:01:10.123Z", - "completed_at": "2025-04-01T13:05:00.000Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/deployments/e0c9dff7-56b6-4c0d-bad0-0e6593f66cd3" + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } }, - "environment": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323" - } - } - }, - { - "id": "f1dae0f8-67c7-5d1e-cbe1-1f7604f77de4", - "environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", - "status": "failed", - "code_reference": "tags/v0.9.0", - "run_hooks": false, - "hooks_argument": null, - "sender_id": null, - "created_at": "2025-03-28T09:15:00.000Z", - "started_at": "2025-03-28T09:15:05.000Z", - "completed_at": "2025-03-28T09:18:00.000Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/deployments/f1dae0f8-67c7-5d1e-cbe1-1f7604f77de4" + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } }, - "environment": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323" - } + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "const": "SSO policy disablement has been accepted." } } - ] - } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/identity-providers/9078ead6-dfc9-4868-8800-723fb6da706f/policies/sso" + } + }, + "message": "SSO policy disablement has been accepted." } } } - } - } - }, - "Environment_Service_API_Deployment": { - "description": "Deployment details", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "description": "Deployment properties", - "properties": { - "id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the deployment." - }, - "environment_id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Identifier of the environment this deployment belongs to." - }, - "status": { - "type": "string", - "description": "Current status of the deployment.", - "enum": [ - "waiting", - "received", - "started", - "done", - "failed", + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ "error", - "killed" + "message" ] }, - "code_reference": { - "type": "string", - "description": "The code reference (e.g. branch or tag) deployed." - }, - "run_hooks": { - "type": "boolean", - "description": "Whether deployment hooks were run." - }, - "hooks_argument": { - "type": [ - "string", - "null" - ], - "description": "Additional arguments passed to deployment hooks." - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "Timestamp when the deployment was created." - }, - "started_at": { - "type": [ - "string", - "null" - ], - "format": "date-time", - "description": "Timestamp when the deployment started." - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "format": "date-time", - "description": "Timestamp when the deployment completed." - }, - "sender_id": { - "type": [ - "string", - "null" - ], - "description": "Identifier of the user or system that initiated the deployment." - }, - "logs": { - "type": [ - "string", - "null" - ], - "description": "Deployment log output." + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] } - }, - "required": [ - "id", - "environment_id", - "status", - "code_reference", - "run_hooks", - "created_at" ] }, - { - "type": "object", - "properties": { - "_links": { + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "error": { + "type": "string" + }, + "message": { + "type": "string" } }, "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "error", + "message" + ] }, - "_embedded": { + { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] } - }, - "required": [ - "_links" ] - } - ] - }, - "example": { - "id": "e0c9dff7-56b6-4c0d-bad0-0e6593f66cd3", - "environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", - "status": "started", - "code_reference": "tags/v1.0.0", - "run_hooks": true, - "hooks_argument": "--skip-db-update", - "created_at": "2025-04-01T13:01:06.603Z", - "started_at": "2025-04-01T13:01:10.123Z", - "completed_at": null, - "sender_id": null, - "logs": null, - "_links": { - "self": { - "href": "https://api.acquia.com/v3/deployments/e0c9dff7-56b6-4c0d-bad0-0e6593f66cd3" }, - "environment": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323" + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." } } } - } - }, - "links": { - "self": { - "operationId": "findDeploymentByDeploymentId", - "parameters": { - "deploymentId": "$request.path.deploymentId" - } - } - } - }, - "Environment_Service_API_CodeDeploy": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "concurrency": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "Maximum number of concurrent code deploys allowed for the environment." - } - }, - "required": [ - "concurrency" - ] - }, - { - "type": "object", - "properties": { - "_links": { + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "error": { + "type": "string" + }, + "message": { + "type": "string" } }, "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "error", + "message" + ] }, - "_embedded": { + { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] } - }, - "required": [ - "_links" ] - } - ] - }, - "example": { - "concurrency": 5, - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/code-deploy" + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." } } } - } - }, - "links": { - "self": { - "operationId": "findCodeDeployByEnvironmentId", - "parameters": { - "environmentId": "$request.path.environmentId" - } - } - } - }, - "Environment_Service_API_Environment": { - "description": "Environment details", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "description": "Environment properties", - "properties": { - "id": { - "type": "string", - "description": "The unique identifier of the environment", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "name": { - "type": "string", - "description": "The machine name of the environment" - }, - "label": { - "type": "string", - "description": "The human-readable label of the environment" - }, - "description": { - "type": "string", - "description": "A description of the environment" - }, - "status": { - "type": "string", - "description": "The current status of the environment", - "enum": [ - "normal", - "allocated", - "launching", - "killed", - "cancelled", - "stopped" - ] - }, - "flags": { + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { "type": "object", - "description": "Environment configuration flags", - "additionalProperties": { - "type": "boolean" - } + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] }, - "properties": { + { "type": "object", - "description": "Environment PHP and server properties", "properties": { - "version": { + "error": { "type": "string", - "description": "PHP version" - }, - "max_execution_time": { - "type": "integer", - "description": "Maximum execution time in seconds" - }, - "memory_limit": { - "type": "integer", - "description": "Memory limit in MB" - }, - "apcu": { - "type": "integer", - "description": "APCu cache size in MB" - }, - "client_max_body_size": { - "type": "integer", - "description": "Maximum client body size in MB" - }, - "max_input_vars": { - "type": "integer", - "description": "Maximum number of input variables" - }, - "max_post_size": { - "type": "integer", - "description": "Maximum POST size in MB" - }, - "memcached_limit": { - "type": "integer", - "description": "Memcached limit in MB" - }, - "upload_max_filesize": { - "type": "integer", - "description": "Maximum upload file size in MB" + "const": "conflict" }, - "operating_system": { + "message": { "type": "string", - "description": "Operating system codename" + "example": "The requested operation is invalid or cannot be completed." } - } - }, - "reference": { - "type": "string", - "description": "The code reference (branch, tag, or commit) deployed to this environment" - }, - "code_switch_status": { - "type": "string", - "description": "The status of the Switch Code action", - "enum": [ - "IDLE", - "IN_PROGRESS" + }, + "required": [ + "error", + "message" ] - }, - "ssh_url": { - "type": "string", - "format": "uri", - "description": "The SSH connection string for accessing this environment" } - }, - "required": [ - "id", - "name", - "label", - "status", - "flags", - "properties", - "reference", - "code_switch_status", - "ssh_url" ] }, - { - "type": "object", - "properties": { - "_links": { + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "error": { + "type": "string" + }, + "message": { + "type": "string" } }, "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "error", + "message" + ] }, - "_embedded": { + { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] } - }, - "required": [ - "_links" ] }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "properties": { - "codebase": { - "allOf": [ - { - "type": "object", - "description": "Embedded codebase resource", - "properties": { - "id": { - "type": "string", - "description": "The unique identifier of the codebase" - } - }, - "required": [ - "id" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + } + }, + "security": [ + { + "Federated_Authentication_API_BearerAuth": [] + } + ] + } + } + }, + "components": { + "parameters": { + "Environment_Service_API_environmentId": { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + }, + "Environment_Service_API_siteId": { + "name": "siteId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the site." + }, + "Environment_Service_API_deploymentId": { + "name": "deploymentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the deployment." + }, + "Environment_Service_API_codebaseId": { + "name": "codebaseId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Codebase identifier" + }, + "Environment_Service_API_domainName": { + "name": "domainName", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$" + }, + "description": "The fully-qualified domain name (e.g., www.example.com)." + }, + "Environment_Service_API_backupId": { + "name": "backupId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Database backup identifier" + }, + "Environment_Service_API_privateNetworkId": { + "name": "privateNetworkId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Private network identifier" + }, + "Environment_Service_API_patternId": { + "name": "patternId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the domain pattern." + }, + "Environment_Service_API_CodebaseId": { + "name": "codebaseId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Codebase identifier" + }, + "Environment_Service_API_Offset": { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + "Environment_Service_API_Limit": { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + "Environment_Service_API_Filter": { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "status=active;type=standard" + }, + "Environment_Service_API_EnvironmentId": { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + }, + "Environment_Service_API_SiteId": { + "name": "siteId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the site." + }, + "Environment_Service_API_PrivateNetworkId": { + "name": "privateNetworkId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Private network identifier" + }, + "Environment_Service_API_Sort": { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" + }, + "Environment_Service_API_DomainName": { + "name": "domainName", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$" + }, + "description": "The fully-qualified domain name (e.g., www.example.com)." + }, + "Environment_Service_API_BackupId": { + "name": "backupId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Database backup identifier" + }, + "Environment_Service_API_DeploymentId": { + "name": "deploymentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the deployment." + }, + "Environment_Service_API_PatternId": { + "name": "patternId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the domain pattern." + }, + "SSH_Key_Service_API_SshKeyId": { + "name": "sshKeyId", + "in": "path", + "description": "The SSH key's unique identifier.", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "example": "981b7910-2fe9-11e9-b210-d663bd873d93" + }, + "SSH_Key_Service_API_Offset": { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + "SSH_Key_Service_API_Limit": { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + "SSH_Key_Service_API_Filter": { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals (default if no operator specified)\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `label=primary` - Filter by label equals primary\n- `fingerprint=@SHA256` - Filter by fingerprint containing \"SHA256\"\n- `label=primary;fingerprint=@SHA256` - label is primary AND fingerprint contains SHA256\n- `label=primary,label=backup` - label is primary OR backup\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "label=primary;fingerprint=@SHA256" + }, + "SSH_Key_Service_API_Sort": { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" + }, + "Site_Service_API_siteId": { + "name": "siteId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "12345678-1234-1234-1234-123456789012" + }, + "description": "Unique identifier for the site" + }, + "Site_Service_API_codebaseId": { + "name": "codebaseId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "550e8400-e29b-41d4-a716-446655441212" + }, + "description": "Unique identifier for the codebase" + }, + "Site_Service_API_subscriptionId": { + "name": "subscriptionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "550e8300-e29b-41d4-a716-446655441212" + }, + "description": "Unique identifier for the subscription" + }, + "Site_Service_API_environmentId": { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "0ebce493-9d09-479d-a9a8-138a206fa687" + }, + "description": "Unique identifier for the environment" + }, + "Site_Service_API_Offset": { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + "Site_Service_API_Limit": { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + "Site_Service_API_Filter": { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "status=active;type=standard" + }, + "Site_Service_API_Sort": { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" + }, + "Site_Service_API_SiteId": { + "name": "siteId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "12345678-1234-1234-1234-123456789012" + }, + "description": "Unique identifier for the site" + }, + "Site_Service_API_CodebaseId": { + "name": "codebaseId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "550e8400-e29b-41d4-a716-446655441212" + }, + "description": "Unique identifier for the codebase" + }, + "Site_Service_API_SubscriptionId": { + "name": "subscriptionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "550e8300-e29b-41d4-a716-446655441212" + }, + "description": "Unique identifier for the subscription" + }, + "Site_Service_API_EnvironmentId": { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "0ebce493-9d09-479d-a9a8-138a206fa687" + }, + "description": "Unique identifier for the environment" + }, + "New_Relic_Provisioning_API_Offset": { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + "New_Relic_Provisioning_API_Limit": { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + "New_Relic_Provisioning_API_Filter": { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "status=active;type=standard" + }, + "Launch_Group_API_launchGroupId": { + "name": "launchGroupId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the launch group." + }, + "Launch_Group_API_codebaseId": { + "name": "codebaseId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the codebase." + }, + "Launch_Group_API_environmentId": { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + }, + "Launch_Group_API_siteId": { + "name": "siteId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the site." + }, + "Launch_Group_API_domainName": { + "name": "domainName", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$" + }, + "description": "The fully-qualified domain name (e.g., www.example.com)." + }, + "Launch_Group_API_LaunchGroupId": { + "name": "launchGroupId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the launch group." + }, + "Launch_Group_API_Offset": { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + "Launch_Group_API_Limit": { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + "Launch_Group_API_SiteId": { + "name": "siteId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the site." + }, + "Launch_Group_API_EnvironmentId": { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + }, + "Launch_Group_API_Filter": { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "status=active;type=standard" + }, + "Launch_Group_API_DomainName": { + "name": "domainName", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$" + }, + "description": "The fully-qualified domain name (e.g., www.example.com)." + }, + "Launch_Group_API_CodebaseId": { + "name": "codebaseId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the codebase." + }, + "CDN_API_SubscriptionUuid": { + "name": "subscriptionUuid", + "in": "path", + "required": true, + "description": "The unique identifier of the subscription.", + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + } + }, + "CDN_API_DomainName": { + "name": "domainName", + "in": "path", + "required": true, + "description": "The fully qualified domain name.", + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]?(\\.[a-zA-Z]{2,})+$" + } + }, + "CDN_API_EnvironmentId": { + "name": "environmentId", + "in": "path", + "required": true, + "description": "The unique identifier of the environment.", + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + } + }, + "CDN_API_RuleSetId": { + "name": "ruleSetId", + "in": "path", + "required": true, + "description": "The unique identifier of the security rule set.", + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + } + }, + "CDN_API_IpRuleId": { + "name": "ipRuleId", + "in": "path", + "required": true, + "description": "The unique identifier of the IP rule.", + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + } + }, + "CDN_API_CustomRuleId": { + "name": "customRuleId", + "in": "path", + "required": true, + "description": "The unique identifier of the custom security rule.", + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + } + }, + "CDN_API_RateLimitingRuleId": { + "name": "rateLimitingRuleId", + "in": "path", + "required": true, + "description": "The unique identifier of the rate limiting rule.", + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + } + }, + "CDN_API_Offset": { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + "CDN_API_Limit": { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + "CDN_API_Filter": { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "status=active;type=standard" + }, + "CDN_API_Sort": { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" + }, + "Tag_API_tagName": { + "name": "tagName", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the tag." + }, + "Tag_API_Offset": { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + "Tag_API_Limit": { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + "Tag_API_Filter": { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "status=active;type=standard" + }, + "Tag_API_Sort": { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" + }, + "Tag_API_TagName": { + "name": "tagName", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the tag." + }, + "Codebase_Service_API_codebaseId": { + "name": "codebaseId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the codebase." + }, + "Codebase_Service_API_patternId": { + "name": "patternId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the domain pattern." + }, + "Codebase_Service_API_referenceName": { + "name": "referenceName", + "in": "path", + "required": true, + "description": "Name of the git reference (branch or tag). Slashes must be URL-encoded as `%2F` in the path (e.g., `feature%2Fbranch-name`).", + "schema": { + "type": "string", + "pattern": "^[^/]+$" + } + }, + "Codebase_Service_API_subscriptionId": { + "name": "subscriptionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the subscription" + }, + "Codebase_Service_API_Offset": { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + "Codebase_Service_API_Limit": { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + "Codebase_Service_API_Filter": { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "status=active;type=standard" + }, + "Codebase_Service_API_CodebaseId": { + "name": "codebaseId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the codebase." + }, + "Codebase_Service_API_ReferenceName": { + "name": "referenceName", + "in": "path", + "required": true, + "description": "Name of the git reference (branch or tag). Slashes must be URL-encoded as `%2F` in the path (e.g., `feature%2Fbranch-name`).", + "schema": { + "type": "string", + "pattern": "^[^/]+$" + } + }, + "Codebase_Service_API_Sort": { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" + }, + "Codebase_Service_API_PatternId": { + "name": "patternId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the domain pattern." + }, + "Codebase_Service_API_SubscriptionId": { + "name": "subscriptionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the subscription" + }, + "Source_Platform_API_sourceSiteId": { + "name": "sourceSiteId", + "in": "path", + "required": true, + "description": "Unique identifier for the Source site.", + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "f47ac10b-58cc-4372-a567-0e02b2c3d479" + } + }, + "Source_Platform_API_Offset": { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + "Source_Platform_API_Limit": { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + "Source_Platform_API_SourceSiteId": { + "name": "sourceSiteId", + "in": "path", + "required": true, + "description": "Unique identifier for the Source site.", + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "f47ac10b-58cc-4372-a567-0e02b2c3d479" + } + }, + "Failover_Service_API_environmentId": { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + }, + "Failover_Service_API_failoverGroupId": { + "name": "failoverGroupId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the failover group." + }, + "Failover_Service_API_Offset": { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + "Failover_Service_API_Limit": { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + "Failover_Service_API_Filter": { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "status=active;type=standard" + }, + "Failover_Service_API_FailoverGroupId": { + "name": "failoverGroupId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the failover group." + }, + "Failover_Service_API_EnvironmentId": { + "name": "environmentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the environment." + }, + "Federated_Authentication_API_SubscriptionId": { + "name": "subscriptionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the subscription." + }, + "Federated_Authentication_API_SsoDomainId": { + "name": "domainId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the domain." + }, + "Federated_Authentication_API_IdentityProviderId": { + "name": "identityProviderId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "description": "Unique identifier for the identity provider." + }, + "Federated_Authentication_API_Offset": { + "name": "offset", + "in": "query", + "description": "The number of items to skip before starting to collect the result set.", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "example": 20 + } + }, + "Federated_Authentication_API_Limit": { + "name": "limit", + "in": "query", + "description": "The maximum number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "example": 10 + } + }, + "Federated_Authentication_API_Sort": { + "name": "sort", + "in": "query", + "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" + }, + "example": "name,-created_at" + }, + "Federated_Authentication_API_Filter": { + "name": "filter", + "in": "query", + "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", + "required": false, + "schema": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + }, + "example": "status=active;type=standard" + } + }, + "responses": { + "Environment_Service_API_ForbiddenError": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "Environment_Service_API_InternalServerError": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + }, + "Environment_Service_API_NotFoundError": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "Environment_Service_API_UnauthorizedError": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "Environment_Service_API_ValidationError": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "Environment_Service_API_InvalidOperationError": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "Environment_Service_API_DeploymentCollection": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] + } + }, + "required": [ + "count", + "total", + "pagination" + ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "sort": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" + }, + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + } + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "description": "Deployment properties", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the deployment." + }, + "environment_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the environment this deployment belongs to." + }, + "status": { + "type": "string", + "description": "Current status of the deployment.", + "enum": [ + "waiting", + "received", + "started", + "done", + "failed", + "error", + "killed" + ] + }, + "code_reference": { + "type": "string", + "description": "The code reference (e.g. branch or tag) deployed." + }, + "run_hooks": { + "type": "boolean", + "description": "Whether deployment hooks were run." + }, + "hooks_argument": { + "type": [ + "string", + "null" + ], + "description": "Additional arguments passed to deployment hooks." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Timestamp when the deployment was created." + }, + "started_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "Timestamp when the deployment started." + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "Timestamp when the deployment completed." + }, + "sender_id": { + "type": [ + "string", + "null" + ], + "description": "Identifier of the user or system that initiated the deployment." + }, + "logs": { + "type": [ + "string", + "null" + ], + "description": "Deployment log output." + } + }, + "required": [ + "id", + "environment_id", + "status", + "code_reference", + "run_hooks", + "created_at" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + "examples": { + "deployment_response": { + "summary": "Deployment collection with pagination", + "value": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2&offset=2" + }, + "limit": { + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?offset=2{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2&offset=2{&filter}", + "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2&offset=2{&sort}", + "templated": true + }, + "prev": { + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2&offset=0" + }, + "next": { + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/deployments?limit=2&offset=4" + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "e0c9dff7-56b6-4c0d-bad0-0e6593f66cd3", + "environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", + "status": "done", + "code_reference": "tags/v1.0.0", + "run_hooks": true, + "hooks_argument": null, + "sender_id": null, + "created_at": "2025-04-01T13:01:06.603Z", + "started_at": "2025-04-01T13:01:10.123Z", + "completed_at": "2025-04-01T13:05:00.000Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/deployments/e0c9dff7-56b6-4c0d-bad0-0e6593f66cd3" + }, + "environment": { + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323" + } + } + }, + { + "id": "f1dae0f8-67c7-5d1e-cbe1-1f7604f77de4", + "environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", + "status": "failed", + "code_reference": "tags/v0.9.0", + "run_hooks": false, + "hooks_argument": null, + "sender_id": null, + "created_at": "2025-03-28T09:15:00.000Z", + "started_at": "2025-03-28T09:15:05.000Z", + "completed_at": "2025-03-28T09:18:00.000Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/deployments/f1dae0f8-67c7-5d1e-cbe1-1f7604f77de4" + }, + "environment": { + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323" + } + } + } + ] + } + } + } + } + } + } + }, + "Environment_Service_API_Deployment": { + "description": "Deployment details", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "description": "Deployment properties", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the deployment." + }, + "environment_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the environment this deployment belongs to." + }, + "status": { + "type": "string", + "description": "Current status of the deployment.", + "enum": [ + "waiting", + "received", + "started", + "done", + "failed", + "error", + "killed" + ] + }, + "code_reference": { + "type": "string", + "description": "The code reference (e.g. branch or tag) deployed." + }, + "run_hooks": { + "type": "boolean", + "description": "Whether deployment hooks were run." + }, + "hooks_argument": { + "type": [ + "string", + "null" + ], + "description": "Additional arguments passed to deployment hooks." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Timestamp when the deployment was created." + }, + "started_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "Timestamp when the deployment started." + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "Timestamp when the deployment completed." + }, + "sender_id": { + "type": [ + "string", + "null" + ], + "description": "Identifier of the user or system that initiated the deployment." + }, + "logs": { + "type": [ + "string", + "null" + ], + "description": "Deployment log output." + } + }, + "required": [ + "id", + "environment_id", + "status", + "code_reference", + "run_hooks", + "created_at" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "id": "e0c9dff7-56b6-4c0d-bad0-0e6593f66cd3", + "environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", + "status": "started", + "code_reference": "tags/v1.0.0", + "run_hooks": true, + "hooks_argument": "--skip-db-update", + "created_at": "2025-04-01T13:01:06.603Z", + "started_at": "2025-04-01T13:01:10.123Z", + "completed_at": null, + "sender_id": null, + "logs": null, + "_links": { + "self": { + "href": "https://api.acquia.com/v3/deployments/e0c9dff7-56b6-4c0d-bad0-0e6593f66cd3" + }, + "environment": { + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323" + } + } + } + } + }, + "links": { + "self": { + "operationId": "findDeploymentByDeploymentId", + "parameters": { + "deploymentId": "$request.path.deploymentId" + } + } + } + }, + "Environment_Service_API_CodeDeploy": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "concurrency": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "Maximum number of concurrent code deploys allowed for the environment." + } + }, + "required": [ + "concurrency" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "concurrency": 5, + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/code-deploy" + } + } + } + } + }, + "links": { + "self": { + "operationId": "findCodeDeployByEnvironmentId", + "parameters": { + "environmentId": "$request.path.environmentId" + } + } + } + }, + "Environment_Service_API_Environment": { + "description": "Environment details", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "description": "Environment properties", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the environment", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "name": { + "type": "string", + "description": "The machine name of the environment" + }, + "label": { + "type": "string", + "description": "The human-readable label of the environment" + }, + "description": { + "type": "string", + "description": "A description of the environment" + }, + "status": { + "type": "string", + "description": "The current status of the environment", + "enum": [ + "normal", + "allocated", + "launching", + "killed", + "cancelled", + "stopped" + ] + }, + "flags": { + "type": "object", + "description": "Environment configuration flags", + "additionalProperties": { + "type": "boolean" + } + }, + "properties": { + "type": "object", + "description": "Environment PHP and server properties", + "properties": { + "version": { + "type": "string", + "description": "PHP version" + }, + "max_execution_time": { + "type": "integer", + "description": "Maximum execution time in seconds" + }, + "memory_limit": { + "type": "integer", + "description": "Memory limit in MB" + }, + "apcu": { + "type": "integer", + "description": "APCu cache size in MB" + }, + "client_max_body_size": { + "type": "integer", + "description": "Maximum client body size in MB" + }, + "max_input_vars": { + "type": "integer", + "description": "Maximum number of input variables" + }, + "max_post_size": { + "type": "integer", + "description": "Maximum POST size in MB" + }, + "memcached_limit": { + "type": "integer", + "description": "Memcached limit in MB" + }, + "upload_max_filesize": { + "type": "integer", + "description": "Maximum upload file size in MB" + }, + "operating_system": { + "type": "string", + "description": "Operating system codename" + } + } + }, + "reference": { + "type": "string", + "description": "The code reference (branch, tag, or commit) deployed to this environment" + }, + "code_switch_status": { + "type": "string", + "description": "The status of the Switch Code action", + "enum": [ + "IDLE", + "IN_PROGRESS" + ] + }, + "ssh_url": { + "type": "string", + "format": "uri", + "description": "The SSH connection string for accessing this environment" + }, + "region": { + "type": "string", + "description": "The cloud region where this environment is hosted" + }, + "domain_name": { + "type": "string", + "description": "The default domain for this environment" + } + }, + "required": [ + "id", + "name", + "label", + "status", + "flags", + "properties", + "reference", + "code_switch_status", + "ssh_url", + "domain_name" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "properties": { + "codebase": { + "allOf": [ + { + "type": "object", + "description": "Embedded codebase resource", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the codebase" + } + }, + "required": [ + "id" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc" + }, + "codebase": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323" + } + }, + "id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "name": "environment_3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "label": "Environment_3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "description": "Description of 3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "status": "normal", + "flags": { + "production": false, + "protection_mode": false + }, + "properties": { + "version": "8.3", + "max_execution_time": 10, + "memory_limit": 192, + "apcu": 32, + "client_max_body_size": 192, + "max_input_vars": 1000, + "max_post_size": 256, + "memcached_limit": 128, + "upload_max_filesize": 192, + "operating_system": "focal" + }, + "reference": "tag/v3.1", + "region": "us-east-1", + "code_switch_status": "IDLE", + "ssh_url": "ssh://site.dev@sitedev.ssh.hosted.acquia-sites.com", + "domain_name": "env-default-domain.example.com", + "_embedded": { + "codebase": { + "id": "d3f7270e-c45f-4801-9308-5e8afe84a323", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323" + } + } + } + } + } + } + }, + "links": { + "self": { + "operationId": "findEnvironmentByEnvironmentId", + "parameters": { + "environmentId": "$request.path.environmentId" + } + } + } + }, + "Environment_Service_API_EnvironmentCollection": { + "description": "Environment collection", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] + } + }, + "required": [ + "count", + "total", + "pagination" + ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + } + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "description": "Environment properties", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the environment", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "name": { + "type": "string", + "description": "The machine name of the environment" + }, + "label": { + "type": "string", + "description": "The human-readable label of the environment" + }, + "description": { + "type": "string", + "description": "A description of the environment" + }, + "status": { + "type": "string", + "description": "The current status of the environment", + "enum": [ + "normal", + "allocated", + "launching", + "killed", + "cancelled", + "stopped" + ] + }, + "flags": { + "type": "object", + "description": "Environment configuration flags", + "additionalProperties": { + "type": "boolean" + } + }, + "properties": { + "type": "object", + "description": "Environment PHP and server properties", + "properties": { + "version": { + "type": "string", + "description": "PHP version" + }, + "max_execution_time": { + "type": "integer", + "description": "Maximum execution time in seconds" + }, + "memory_limit": { + "type": "integer", + "description": "Memory limit in MB" + }, + "apcu": { + "type": "integer", + "description": "APCu cache size in MB" + }, + "client_max_body_size": { + "type": "integer", + "description": "Maximum client body size in MB" + }, + "max_input_vars": { + "type": "integer", + "description": "Maximum number of input variables" + }, + "max_post_size": { + "type": "integer", + "description": "Maximum POST size in MB" + }, + "memcached_limit": { + "type": "integer", + "description": "Memcached limit in MB" + }, + "upload_max_filesize": { + "type": "integer", + "description": "Maximum upload file size in MB" + }, + "operating_system": { + "type": "string", + "description": "Operating system codename" + } + } + }, + "reference": { + "type": "string", + "description": "The code reference (branch, tag, or commit) deployed to this environment" + }, + "code_switch_status": { + "type": "string", + "description": "The status of the Switch Code action", + "enum": [ + "IDLE", + "IN_PROGRESS" + ] + }, + "ssh_url": { + "type": "string", + "format": "uri", + "description": "The SSH connection string for accessing this environment" + }, + "region": { + "type": "string", + "description": "The cloud region where this environment is hosted" + }, + "domain_name": { + "type": "string", + "description": "The default domain for this environment" + } + }, + "required": [ + "id", + "name", + "label", + "status", + "flags", + "properties", + "reference", + "code_switch_status", + "ssh_url", + "domain_name" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sites/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/sites/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/sites/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2{&offset}", + "templated": true + } + }, + "count": 1, + "total": 1, + "pagination": { + "total": 1, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "name": "dev", + "label": "Dev", + "description": "Development environment", + "status": "normal", + "reference": "branch/main", + "region": "us-east-1", + "code_switch_status": "IDLE", + "ssh_url": "ssh://site.dev@sitedev.ssh.hosted.acquia-sites.com", + "domain_name": "env-default-domain.example.com", + "flags": { + "production": false, + "protection_mode": false + }, + "properties": { + "version": "8.3" + }, + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc" + } + } + } + ] + } + } + } + } + }, + "Environment_Service_API_FilterableEnvironmentCollection": { + "description": "Environment collection", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] + } + }, + "required": [ + "count", + "total", + "pagination" + ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } + } + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "description": "Environment properties", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the environment", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "name": { + "type": "string", + "description": "The machine name of the environment" + }, + "label": { + "type": "string", + "description": "The human-readable label of the environment" + }, + "description": { + "type": "string", + "description": "A description of the environment" + }, + "status": { + "type": "string", + "description": "The current status of the environment", + "enum": [ + "normal", + "allocated", + "launching", + "killed", + "cancelled", + "stopped" + ] + }, + "flags": { + "type": "object", + "description": "Environment configuration flags", + "additionalProperties": { + "type": "boolean" + } + }, + "properties": { + "type": "object", + "description": "Environment PHP and server properties", + "properties": { + "version": { + "type": "string", + "description": "PHP version" + }, + "max_execution_time": { + "type": "integer", + "description": "Maximum execution time in seconds" + }, + "memory_limit": { + "type": "integer", + "description": "Memory limit in MB" + }, + "apcu": { + "type": "integer", + "description": "APCu cache size in MB" + }, + "client_max_body_size": { + "type": "integer", + "description": "Maximum client body size in MB" + }, + "max_input_vars": { + "type": "integer", + "description": "Maximum number of input variables" + }, + "max_post_size": { + "type": "integer", + "description": "Maximum POST size in MB" + }, + "memcached_limit": { + "type": "integer", + "description": "Memcached limit in MB" + }, + "upload_max_filesize": { + "type": "integer", + "description": "Maximum upload file size in MB" + }, + "operating_system": { + "type": "string", + "description": "Operating system codename" + } + } + }, + "reference": { + "type": "string", + "description": "The code reference (branch, tag, or commit) deployed to this environment" + }, + "code_switch_status": { + "type": "string", + "description": "The status of the Switch Code action", + "enum": [ + "IDLE", + "IN_PROGRESS" + ] + }, + "ssh_url": { + "type": "string", + "format": "uri", + "description": "The SSH connection string for accessing this environment" + }, + "region": { + "type": "string", + "description": "The cloud region where this environment is hosted" + }, + "domain_name": { + "type": "string", + "description": "The default domain for this environment" + } + }, + "required": [ + "id", + "name", + "label", + "status", + "flags", + "properties", + "reference", + "code_switch_status", + "ssh_url", + "domain_name" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2&offset=0{&filter}", + "templated": true + } + }, + "count": 1, + "total": 1, + "pagination": { + "total": 1, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "name": "dev", + "label": "Dev", + "description": "Development environment", + "status": "normal", + "reference": "branch/main", + "region": "us-east-1", + "code_switch_status": "IDLE", + "ssh_url": "ssh://site.dev@sitedev.ssh.hosted.acquia-sites.com", + "domain_name": "env-default-domain.example.com", + "flags": { + "production": false, + "protection_mode": false + }, + "properties": { + "version": "8.3" + }, + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc" + } + } + } + ] + } + } + } + } + }, + "Environment_Service_API_SiteInstance": { + "description": "Site Instance details", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "description": "Site Instance properties", + "properties": { + "site_id": { + "type": "string", + "description": "The unique identifier of the site", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "environment_id": { + "type": "string", + "description": "The unique identifier of the environment", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "status": { + "type": "string", + "description": "The current status of the site instance", + "enum": [ + "active", + "creating", + "create-failed", + "updating", + "update-failed", + "deleting", + "deleted", + "delete-failed" + ] + }, + "health_status": { + "type": "object", + "description": "Health status information for the site instance", + "properties": { + "code": { + "type": "string", + "description": "Health status code" + }, + "summary": { + "type": "string", + "description": "Summary of the health status" + }, + "details": { + "type": "string", + "description": "Detailed health status information" + } + }, + "required": [ + "code", + "summary", + "details" + ] + }, + "domains": { + "type": "array", + "description": "List of domains associated with the site instance. Each entry carries the same values as the corresponding domain read.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The domain name." + }, + "is_managed": { + "type": "boolean", + "description": "Whether the domain is managed by Acquia. Carries the same value as the `is_managed` property of the domain reads, including when `type` is absent." + }, + "type": { + "type": "string", + "description": "The type of the domain. Carries the same value space as the `type` property of the domain reads. Absent when the platform holds no recorded type for the domain, or reports one this API does not recognise.", + "enum": [ + "custom", + "environment-pattern", + "codebase-pattern", + "acquia", + "launch-group" + ], + "example": "custom" + } + }, + "required": [ + "name", + "is_managed" + ] + } + }, + "deployment_order": { + "type": [ + "integer", + "null" + ], + "description": "The order in which this site instance is deployed relative to others.", + "example": 1 + }, + "delete_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "The scheduled deletion date-time for this site instance, if set." + }, + "date_marked_for_deletion": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "The date-time when this site instance was marked for deletion." + }, + "deployed_vcs_ref": { + "type": "string", + "description": "The VCS reference (e.g. branch or tag) that is currently deployed on this site instance.", + "example": "MT1.0.10" + }, + "code_hash": { + "type": "string", + "description": "The commit hash of the code currently deployed on this site instance.", + "example": "f70f0eaffa3bdde6622d2a3aca1a5eb2034dd899" + }, + "protection_mode": { + "type": [ + "object", + "null" + ], + "description": "The current protection mode of the site instance", + "properties": { + "is_enabled": { + "type": "boolean", + "description": "Indicates whether the protection mode is enabled for the site instance" + }, + "is_inherited": { + "type": "boolean", + "description": "Indicates whether the protection mode is inherited from the environment" + } + }, + "required": [ + "is_enabled", + "is_inherited" + ] + } + }, + "required": [ + "site_id", + "environment_id", + "status", + "health_status", + "domains" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323" + } + }, + "site_id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", + "status": "active", + "health_status": { + "code": "OK", + "summary": "The health status is OK.", + "details": "The site instance is active" + }, + "domains": [ + { + "name": "example.com", + "is_managed": false, + "type": "custom" + }, + { + "name": "example-2.com", + "is_managed": true, + "type": "acquia" + } + ], + "protection_mode": { + "is_enabled": true, + "is_inherited": true + }, + "deployment_order": 2, + "deployed_vcs_ref": "main", + "code_hash": "f70f0eaffa3bdde6622d2a3aca1a5eb2034dd899" + } + } + }, + "links": { + "self": { + "operationId": "findSiteInstanceBySiteIdAndEnvironmentId", + "parameters": { + "siteId": "$request.path.siteId", + "environmentId": "$request.path.environmentId" + } + } + } + }, + "Environment_Service_API_Domain": { + "description": "Domain details", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "description": "Domain properties", + "properties": { + "name": { + "type": "string", + "description": "The domain name." + }, + "is_managed": { + "type": "boolean", + "description": "Whether the domain is managed by Acquia. `false` for `custom` and `true` for every other type. When `type` is absent, `is_managed` is still present and carries the platform's own value for the domain, which is `false` when the platform holds no recorded type. Read-only; there is no `is_managed` write parameter." + }, + "type": { + "type": "string", + "description": "The type of the domain. `custom` is a customer's own domain. `acquia` is the generated default domain for the site instance. `environment-pattern` and `codebase-pattern` are platform-generated pattern domains. `launch-group` marks the domain as belonging to a launch group rather than to the site instance directly; it is requested on write via the `type` request property and is restricted to Acquia staff. Absent when the platform holds no recorded type for the domain, or reports one this API does not recognise.", + "enum": [ + "custom", + "environment-pattern", + "codebase-pattern", + "acquia", + "launch-group" + ], + "example": "custom" + } + }, + "required": [ + "name", + "is_managed" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "name": "example.com", + "is_managed": false, + "type": "custom", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains/example.com" + } + } + } + } + }, + "links": { + "self": { + "operationId": "findDomainBySiteIdAndEnvironmentIdAndDomainName", + "parameters": { + "siteId": "$request.path.siteId", + "environmentId": "$request.path.environmentId", + "domainName": "$request.path.domainName" + } + } + } + }, + "Environment_Service_API_DomainCollection": { + "description": "Domain collection", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] + } + }, + "required": [ + "count", + "total", + "pagination" + ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "sort": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" + }, + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + } + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "description": "Domain properties", + "properties": { + "name": { + "type": "string", + "description": "The domain name." + }, + "is_managed": { + "type": "boolean", + "description": "Whether the domain is managed by Acquia. `false` for `custom` and `true` for every other type. When `type` is absent, `is_managed` is still present and carries the platform's own value for the domain, which is `false` when the platform holds no recorded type. Read-only; there is no `is_managed` write parameter." + }, + "type": { + "type": "string", + "description": "The type of the domain. `custom` is a customer's own domain. `acquia` is the generated default domain for the site instance. `environment-pattern` and `codebase-pattern` are platform-generated pattern domains. `launch-group` marks the domain as belonging to a launch group rather than to the site instance directly; it is requested on write via the `type` request property and is restricted to Acquia staff. Absent when the platform holds no recorded type for the domain, or reports one this API does not recognise.", + "enum": [ + "custom", + "environment-pattern", + "codebase-pattern", + "acquia", + "launch-group" + ], + "example": "custom" + } + }, + "required": [ + "name", + "is_managed" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains?limit=2&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains?limit=2{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains?limit=2&offset=0{&filter}", + "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains?limit=2&offset=0{&sort}", + "templated": true + } + }, + "count": 1, + "total": 1, + "pagination": { + "total": 1, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "name": "example.com", + "is_managed": false, + "type": "custom", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains/example.com" + } + } + } + ] + } + } + } + } + }, + "Environment_Service_API_DomainStatus": { + "description": "Domain DNS status details", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "description": "Domain DNS status properties", + "properties": { + "hostname": { + "type": "string", + "description": "The domain name." + }, + "site_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the site this domain belongs to." + }, + "environment_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the environment this domain belongs to." + }, + "ip_addresses": { + "type": "array", + "description": "List of IP addresses resolving for this domain.", + "items": { + "type": "string" + } + }, + "cnames": { + "type": "array", + "description": "List of CNAME records resolving for this domain.", + "items": { + "type": "string" + } + }, + "flags": { + "type": "object", + "description": "Status flags for the domain.", + "properties": { + "default": { + "type": "boolean", + "description": "Whether this is the default domain." + }, + "active": { + "type": "boolean", + "description": "Whether the domain is active." + }, + "dns_resolves": { + "type": "boolean", + "description": "Whether the domain DNS resolves correctly." + }, + "acquia_hosted": { + "type": "boolean", + "description": "Whether the domain is hosted on Acquia infrastructure." + } + }, + "required": [ + "default", + "active", + "dns_resolves", + "acquia_hosted" + ] + } + }, + "required": [ + "hostname", + "site_id", + "environment_id", + "ip_addresses", + "cnames", + "flags" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "hostname": "example.com", + "site_id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", + "ip_addresses": [ + "203.0.113.10" + ], + "cnames": [], + "flags": { + "default": false, + "active": true, + "dns_resolves": true, + "acquia_hosted": true + }, + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains/example.com/status" + } + } + } + } + } + }, + "Environment_Service_API_Database": { + "description": "Database details", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "description": "Database properties", + "properties": { + "database_name": { + "type": "string", + "description": "The name of the database." + }, + "database_role": { + "type": "string", + "description": "The role of the database (e.g. the site username)." + } + }, + "required": [ + "database_name", + "database_role" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "database_name": "site_dev", + "database_role": "site_dev_user", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database" + } + } + } + } + }, + "links": { + "self": { + "operationId": "findDatabaseBySiteIdAndEnvironmentId", + "parameters": { + "siteId": "$request.path.siteId", + "environmentId": "$request.path.environmentId" + } + } + } + }, + "Environment_Service_API_DatabaseConnection": { + "description": "Database connection credential details", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "description": "Database connection credential properties", + "properties": { + "db_host": { + "type": "string", + "description": "The database host." + }, + "name": { + "type": "string", + "description": "The database name." + }, + "password": { + "type": "string", + "description": "The database password." + }, + "user_name": { + "type": "string", + "description": "The database username." + }, + "ssh_host": { + "type": "string", + "description": "The SSH host for tunneling to the database." + } + }, + "required": [ + "db_host", + "name", + "password", + "user_name", + "ssh_host" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "db_host": "db.example.com", + "name": "site_dev", + "password": "s3cr3t", + "user_name": "site_dev_user", + "ssh_host": "site.dev.ssh.hosted.acquia-sites.com", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/connection" + } + } + } + } + } + }, + "Environment_Service_API_DatabaseBackup": { + "description": "Database backup details", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "description": "Database backup properties", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the database backup." + }, + "database_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the database this backup belongs to." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Timestamp when the backup was created." + }, + "type": { + "type": "string", + "enum": [ + "DAILY", + "ON_DEMAND" + ], + "description": "The type of backup." + } + }, + "required": [ + "id", + "database_id", + "created_at", + "type" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "database_id": "b2c3d4e5-f6a7-8901-bcde-f01234567891", + "created_at": "2025-04-01T02:00:00.000Z", + "type": "DAILY", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups/a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "download": { + "href": "https://s3.amazonaws.com/acquia-backups/backup-a1b2c3d4.sql.gz?X-Amz-Expires=3600&X-Amz-Signature=abc123" + } + } + } + } + }, + "links": { + "self": { + "operationId": "findDatabaseBackupBySiteIdAndEnvironmentIdAndBackupId", + "parameters": { + "siteId": "$request.path.siteId", + "environmentId": "$request.path.environmentId", + "backupId": "$request.path.backupId" + } + } + } + }, + "Environment_Service_API_DatabaseBackupCollection": { + "description": "Database backup collection", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] + } + }, + "required": [ + "count", + "total", + "pagination" + ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "sort": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" + }, + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + } + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "description": "Database backup properties", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the database backup." + }, + "database_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the database this backup belongs to." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Timestamp when the backup was created." + }, + "type": { + "type": "string", + "enum": [ + "DAILY", + "ON_DEMAND" + ], + "description": "The type of backup." + } + }, + "required": [ + "id", + "database_id", + "created_at", + "type" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups?limit=2&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups?limit=2{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups?limit=2&offset=0{&filter}", + "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups?limit=2&offset=0{&sort}", + "templated": true + } + }, + "count": 1, + "total": 1, + "pagination": { + "total": 1, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "database_id": "b2c3d4e5-f6a7-8901-bcde-f01234567891", + "created_at": "2025-04-01T02:00:00.000Z", + "type": "DAILY", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups/a1b2c3d4-e5f6-7890-abcd-ef1234567890" + } + } + } + ] + } + } + } + } + }, + "Environment_Service_API_EgressIpCollection": { + "description": "Egress IP collection", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] + } + }, + "required": [ + "count", + "total", + "pagination" + ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + } + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "description": "Egress IP properties", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the egress IP." + }, + "status": { + "type": "string", + "description": "Current status of the egress IP." + }, + "ipv4": { + "type": "string", + "description": "The IPv4 address." + }, + "ipv6": { + "type": [ + "string", + "null" + ], + "description": "The IPv6 address, if assigned." + }, + "flags": { + "type": "object", + "description": "Status flags for the egress IP.", + "additionalProperties": { + "type": "boolean" + } + } + }, + "required": [ + "id", + "status", + "ipv4", + "flags" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/eips?limit=25&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/eips?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/eips?limit=25{&offset}", + "templated": true + } + }, + "count": 1, + "total": 1, + "pagination": { + "total": 1, + "limit": 25, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "eip-a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "status": "active", + "ipv4": "203.0.113.10", + "ipv6": null, + "flags": { + "is_primary": true + } + } + ] + } + } + } + } + }, + "Environment_Service_API_TrustedProxies": { + "description": "Trusted proxy configuration details", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "description": "Trusted proxy configuration properties", + "properties": { + "cidrs_ipv4": { + "type": "array", + "description": "List of trusted IPv4 CIDR blocks.", + "items": { + "type": "string" + } + }, + "cidrs_ipv6": { + "type": "array", + "description": "List of trusted IPv6 CIDR blocks.", + "items": { + "type": "string" + } + }, + "associated_cdns": { + "type": "object", + "description": "Map of CDN configurations associated with this environment, keyed by CDN name.", + "additionalProperties": { + "type": "object", + "properties": { + "label": { + "type": "string", + "description": "Display label for the CDN." + }, + "is_enabled": { + "type": "boolean", + "description": "Whether the CDN is enabled." + } + }, + "required": [ + "label", + "is_enabled" + ] + } + } + }, + "required": [ + "cidrs_ipv4", + "cidrs_ipv6", + "associated_cdns" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "cidrs_ipv4": [ + "203.0.113.0/24" + ], + "cidrs_ipv6": [], + "associated_cdns": { + "cloudflare": { + "label": "Cloudflare", + "is_enabled": true + } + }, + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/trusted-proxies" + } + } + } + } + }, + "links": { + "self": { + "operationId": "findTrustedProxiesByEnvironmentId", + "parameters": { + "environmentId": "$request.path.environmentId" + } + } + } + }, + "Environment_Service_API_PrivateNetwork": { + "description": "Private network details", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "description": "Private network reference properties", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the private network." + }, + "label": { + "type": [ + "string", + "null" + ], + "description": "Human-readable label for the private network." + } + }, + "required": [ + "id" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "id": "pn-a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "label": "Production VPC", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/private-network" + } + } + } + } + }, + "links": { + "self": { + "operationId": "findPrivateNetworkByEnvironmentId", + "parameters": { + "environmentId": "$request.path.environmentId" + } + } + } + }, + "Environment_Service_API_DomainPattern": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the domain pattern." + }, + "pattern": { + "type": "string", + "maxLength": 455, + "pattern": "^(?=.*\\[site-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", + "description": "The domain pattern string, optionally followed by a single path segment (e.g. [site-name].acme.com/app). The [site-name] token is mandatory; [environment-name] is optional at environment level. Domain rules (enforced in service layer): ≤ 200 chars excluding token placeholders, at least 2 components (must contain .), no IP addresses, no forbidden suffixes (acquia-sites.com, hosting.acquia.com), no wildcards, no leading/trailing dot or hyphen, no consecutive dots, no query string or fragment. Path rules: optional, max 255 chars, must match ^/[A-Za-z0-9._-]+$, max 1 segment. DNS label limit: 63 chars after token substitution ([site-name] ≤ 14 chars). One pattern per environment.\n", + "example": "[site-name].acme.com" + } + }, + "required": [ + "id", + "pattern" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "id": "11111111-1111-1111-1111-111111111111", + "pattern": "[site-name].acme.com", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns/11111111-1111-1111-1111-111111111111" + } + } + } + } + }, + "links": { + "self": { + "operationId": "findDomainPatternByEnvironmentIdAndPatternId", + "parameters": { + "environmentId": "$request.path.environmentId", + "patternId": "$request.path.patternId" + } + } + } + }, + "Environment_Service_API_DomainPatternCollection": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] + } + }, + "required": [ + "count", + "total", + "pagination" + ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "sort": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" + }, + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + } + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the domain pattern." + }, + "pattern": { + "type": "string", + "maxLength": 455, + "pattern": "^(?=.*\\[site-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", + "description": "The domain pattern string, optionally followed by a single path segment (e.g. [site-name].acme.com/app). The [site-name] token is mandatory; [environment-name] is optional at environment level. Domain rules (enforced in service layer): ≤ 200 chars excluding token placeholders, at least 2 components (must contain .), no IP addresses, no forbidden suffixes (acquia-sites.com, hosting.acquia.com), no wildcards, no leading/trailing dot or hyphen, no consecutive dots, no query string or fragment. Path rules: optional, max 255 chars, must match ^/[A-Za-z0-9._-]+$, max 1 segment. DNS label limit: 63 chars after token substitution ([site-name] ≤ 14 chars). One pattern per environment.\n", + "example": "[site-name].acme.com" + } + }, + "required": [ + "id", + "pattern" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + "examples": { + "domain_pattern_collection": { + "summary": "Domain pattern collection", + "value": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns" + }, + "limit": { + "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?limit=25{&offset}", + "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?limit=25&offset=0{&sort}", + "templated": true + } + }, + "count": 1, + "total": 1, + "pagination": { + "total": 1, + "limit": 25, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "11111111-1111-1111-1111-111111111111", + "pattern": "[site-name].acme.com", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns/11111111-1111-1111-1111-111111111111" + } + } + } + ] + } + } + }, + "domain_pattern_collection_empty": { + "summary": "Empty domain pattern collection", + "value": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns" + }, + "limit": { + "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?limit=25{&offset}", + "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?limit=25&offset=0{&sort}", + "templated": true + } + }, + "count": 0, + "total": 0, + "pagination": { + "total": 0, + "limit": 25, + "offset": 0 + }, + "_embedded": { + "items": [] + } + } + } + } + } + } + }, + "SSH_Key_Service_API_SshKeyCollection": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + }, + "next": { + "description": "Link to the next page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + }, + { + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + }, + { + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] + } + }, + "required": [ + "count", + "total", + "pagination" + ] + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + }, + { + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering." + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + } + } + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "sort": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + }, + { + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for sorting." + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + } + } + } + ] + }, + { + "type": "object", + "description": "A collection of SSH keys.", + "properties": { + "_embedded": { + "type": "object", + "description": "A collection of SSH keys matching the request parameters.", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "required": [ + "id", + "label", + "public_key", + "fingerprint", + "created_at", + "user_id" + ], + "description": "Details an SSH key.", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the SSH key.", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "label": { + "type": "string", + "description": "The human-readable key label." + }, + "public_key": { + "type": "string", + "description": "The public key.", + "minLength": 64 + }, + "fingerprint": { + "type": "string", + "description": "The public key fingerprint.", + "pattern": "^[A-Za-z0-9:+/=.-]+$" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The key creation date." + }, + "user_id": { + "type": "string", + "description": "The unique identifier of the user who owns this SSH key.", + "pattern": "^[a-zA-Z0-9-]+$" + } + } + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + "examples": { + "ssh_keys": { + "summary": "SSH key collection", + "value": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/ssh-keys?limit=2&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/ssh-keys?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/ssh-keys?limit=2{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/ssh-keys?limit=2&offset=0{&filter}", + "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/ssh-keys?limit=2&offset=0{&sort}", + "templated": true + }, + "next": { + "href": "https://api.acquia.com/v3/ssh-keys?limit=2&offset=2" + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "1acbb1a5-e864-4b8e-a3f9-b1ed462afd25", + "label": "primary", + "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQChwPHzTTDKDpSbpa2+d22LcbQmsw92eLsUK3Fmei1fiGDkd34NsYCN8m7lsi3NbvdMS83CtPQPWiCveYPzFs1/hHc4PYj8opD2CNnr5iWVVbyaulCYHCgVv4aB/ojcexg8q483A4xJeF15TiCr/gu34rK6ucTvC/tn/rCwJBudczvEwt0klqYwv8Cl/ytaQboSuem5KgSjO3lMrb6CWtfSNhE43ZOw+UBFBqxIninN868vGMkIv9VY34Pwj54rPn/ItQd6Ef4B0KHHaGmzK0vfP+AK7FxNMoHnj3iYT33KZNqtDozdn5tYyH/bThPebEtgqUn+/w5l6wZIC/8zzvls/127ngHk+jNa0PlNyS2TxhPUK4NaPHIEnnrlp07JEYC4ImcBjaYCWAdcTcUkcJjwZQkN4bGmyO9cjICH98SdLD/HxqzTHeaYDbAX/Hu9HfaBb5dXLWsjw3Xc6hoVnUUZbMQyfgb0KgxDLh92eNGxJkpZiL0VDNOWCxDWsNpzwhLNkLqCvI6lyxiLaUzvJAk6dPaRhExmCbU1lDO2eR0FdSwC1TEhJOT9eDIK1r2hztZKs2oa5FNFfB/IFHVWasVFC9N2h/r/egB5zsRxC9MqBLRBq95NBxaRSFng6ML5WZSw41Qi4C/JWVm89rdj2WqScDHYyAdwyyppWU4T5c9Fmw== example@example.com", + "fingerprint": "SHA256:7a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8g9h0i1j2k3l4m5n6o7p8q9r0s1", + "created_at": "2024-10-01T12:30:00Z", + "user_id": "a47ac10b-58cc-4372-a567-0e02b2c3d479", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/ssh-keys/1acbb1a5-e864-4b8e-a3f9-b1ed462afd25" + } + } + }, + { + "id": "2bcbb1a5-e864-4b8e-a3f9-b1ed462afd26", + "label": "backup", + "public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFf2T1I1d8T1B9Q1b8pS6m2xvY3i5q8sNnU5oQwY5vS9 example@example.com", + "fingerprint": "SHA256:9b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d2e1f0a9b8", + "created_at": "2024-10-02T09:15:00Z", + "user_id": "b58bd21c-69dd-5483-b678-1f13c3d4e580", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/ssh-keys/2bcbb1a5-e864-4b8e-a3f9-b1ed462afd26" + } + } + } + ] + } + } + } + } + } + } + }, + "SSH_Key_Service_API_SshKey": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "required": [ + "id", + "label", + "public_key", + "fingerprint", + "created_at", + "user_id" + ], + "description": "Details an SSH key.", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the SSH key.", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "label": { + "type": "string", + "description": "The human-readable key label." + }, + "public_key": { + "type": "string", + "description": "The public key.", + "minLength": 64 + }, + "fingerprint": { + "type": "string", + "description": "The public key fingerprint.", + "pattern": "^[A-Za-z0-9:+/=.-]+$" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The key creation date." + }, + "user_id": { + "type": "string", + "description": "The unique identifier of the user who owns this SSH key.", + "pattern": "^[a-zA-Z0-9-]+$" + } + } + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "id": "1acbb1a5-e864-4b8e-a3f9-b1ed462afd25", + "label": "primary", + "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQChwPHzTTDKDpSbpa2+d22LcbQmsw92eLsUK3Fmei1fiGDkd34NsYCN8m7lsi3NbvdMS83CtPQPWiCveYPzFs1/hHc4PYj8opD2CNnr5iWVVbyaulCYHCgVv4aB/ojcexg8q483A4xJeF15TiCr/gu34rK6ucTvC/tn/rCwJBudczvEwt0klqYwv8Cl/ytaQboSuem5KgSjO3lMrb6CWtfSNhE43ZOw+UBFBqxIninN868vGMkIv9VY34Pwj54rPn/ItQd6Ef4B0KHHaGmzK0vfP+AK7FxNMoHnj3iYT33KZNqtDozdn5tYyH/bThPebEtgqUn+/w5l6wZIC/8zzvls/127ngHk+jNa0PlNyS2TxhPUK4NaPHIEnnrlp07JEYC4ImcBjaYCWAdcTcUkcJjwZQkN4bGmyO9cjICH98SdLD/HxqzTHeaYDbAX/Hu9HfaBb5dXLWsjw3Xc6hoVnUUZbMQyfgb0KgxDLh92eNGxJkpZiL0VDNOWCxDWsNpzwhLNkLqCvI6lyxiLaUzvJAk6dPaRhExmCbU1lDO2eR0FdSwC1TEhJOT9eDIK1r2hztZKs2oa5FNFfB/IFHVWasVFC9N2h/r/egB5zsRxC9MqBLRBq95NBxaRSFng6ML5WZSw41Qi4C/JWVm89rdj2WqScDHYyAdwyyppWU4T5c9Fmw== example@example.com", + "fingerprint": "SHA256:7a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8g9h0i1j2k3l4m5n6o7p8q9r0s1", + "created_at": "2024-10-01T12:30:00Z", + "user_id": "a47ac10b-58cc-4372-a567-0e02b2c3d479", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/ssh-keys/1acbb1a5-e864-4b8e-a3f9-b1ed462afd25" + } + } + } + } + }, + "links": { + "self": { + "operationId": "findSshKeyBySshKeyId", + "parameters": { + "sshKeyId": "$request.path.sshKeyId" + } + } + } + }, + "SSH_Key_Service_API_UnauthorizedError": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "required": [ + "error", + "message" + ], + "properties": { + "error": { + "type": "string", + "description": "The error summary." + }, + "message": { + "type": "string", + "description": "The long description for the returned error." + } + } + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "SSH_Key_Service_API_ForbiddenError": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "required": [ + "error", + "message" + ], + "properties": { + "error": { + "type": "string", + "description": "The error summary." + }, + "message": { + "type": "string", + "description": "The long description for the returned error." + } + } + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "SSH_Key_Service_API_NotFoundError": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "required": [ + "error", + "message" + ], + "properties": { + "error": { + "type": "string", + "description": "The error summary." + }, + "message": { + "type": "string", + "description": "The long description for the returned error." + } + } + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "SSH_Key_Service_API_ValidationError": { + "description": "Bad Request - Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "error", + "message" + ], + "description": "A validation error.", + "properties": { + "error": { + "type": "string", + "description": "The error summary." + }, + "message": { + "type": "object", + "description": "The validation error message keyed by its field or group name.", + "additionalProperties": { + "type": "string" + } + } + } + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required." + } + } + } + } + }, + "SSH_Key_Service_API_InvalidOperationError": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "required": [ + "error", + "message" + ], + "properties": { + "error": { + "type": "string", + "description": "The error summary." + }, + "message": { + "type": "string", + "description": "The long description for the returned error." + } + } + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "SSH_Key_Service_API_InternalServerError": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "required": [ + "error", + "message" + ], + "properties": { + "error": { + "type": "string", + "description": "The error summary." + }, + "message": { + "type": "string", + "description": "The long description for the returned error." + } + } + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + }, + "Site_Service_API_ForbiddenError": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "Site_Service_API_InternalServerError": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + }, + "Site_Service_API_InvalidOperationError": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "Site_Service_API_NotFoundError": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "Site_Service_API_UnauthorizedError": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "Site_Service_API_ValidationError": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "Site_Service_API_Site": { + "description": "Site details", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "description": "A Site resource", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the site", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "12345678-1234-1234-1234-123456789012" + }, + "name": { + "type": "string", + "description": "The machine name of the site. Must start with a lowercase letter and contain only lowercase letters and numbers.", + "minLength": 1, + "maxLength": 14, + "pattern": "^[a-z][a-z0-9]*$", + "example": "mysite" + }, + "label": { + "type": "string", + "description": "The human-readable label of the site", + "minLength": 1, + "maxLength": 50, + "example": "My Site 1" + }, + "description": { + "type": "string", + "description": "A description of the site", + "maxLength": 512, + "example": "A production site for the marketing team." + }, + "codebase_id": { + "type": "string", + "description": "The unique identifier of the codebase this site belongs to", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "550e8400-e29b-41d4-a716-446655441210" + }, + "status": { + "type": "string", + "description": "The current lifecycle status of the site. ready indicates the site is active and operational. marked-for-deletion indicates the site has been scheduled for deletion and can still be recovered.\n", + "enum": [ + "ready", + "marked-for-deletion" + ], + "example": "ready" + }, + "delete_at": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 datetime indicating when the site is scheduled for deletion. Only present when status is marked-for-deletion.", + "example": "2025-06-15T00:00:00Z" + } + }, + "required": [ + "id", + "name", + "label", + "codebase_id", + "status" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "codebase": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sites/f1a2b3c4-d5e6-7890-abcd-ef1234567890" + }, + "codebase": { + "href": "https://api.acquia.com/v3/codebases/a9b8c7d6-e5f4-3210-abcd-ef9876543210" + } + }, + "id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890", + "name": "mysite", + "label": "My Site", + "description": "This is a description of my site.", + "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", + "status": "ready" + } + } + }, + "links": { + "self": { + "operationId": "findSiteBySiteId", + "parameters": { + "siteId": "$request.path.siteId" + } + } + } + }, + "Site_Service_API_SiteCollection": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] + } + }, + "required": [ + "count", + "total", + "pagination" + ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "sort": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" + }, + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + } + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "description": "A Site resource", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the site", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "12345678-1234-1234-1234-123456789012" + }, + "name": { + "type": "string", + "description": "The machine name of the site. Must start with a lowercase letter and contain only lowercase letters and numbers.", + "minLength": 1, + "maxLength": 14, + "pattern": "^[a-z][a-z0-9]*$", + "example": "mysite" + }, + "label": { + "type": "string", + "description": "The human-readable label of the site", + "minLength": 1, + "maxLength": 50, + "example": "My Site 1" + }, + "description": { + "type": "string", + "description": "A description of the site", + "maxLength": 512, + "example": "A production site for the marketing team." + }, + "codebase_id": { + "type": "string", + "description": "The unique identifier of the codebase this site belongs to", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "550e8400-e29b-41d4-a716-446655441210" + }, + "status": { + "type": "string", + "description": "The current lifecycle status of the site. ready indicates the site is active and operational. marked-for-deletion indicates the site has been scheduled for deletion and can still be recovered.\n", + "enum": [ + "ready", + "marked-for-deletion" + ], + "example": "ready" + }, + "delete_at": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 datetime indicating when the site is scheduled for deletion. Only present when status is marked-for-deletion.", + "example": "2025-06-15T00:00:00Z" + } + }, + "required": [ + "id", + "name", + "label", + "codebase_id", + "status" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + "examples": { + "site_collection": { + "summary": "Site collection with pagination", + "value": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sites?limit=2&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/sites?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/sites?limit=2{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/sites?limit=2&offset=0{&filter}", + "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/sites?limit=2&offset=0{&sort}", + "templated": true + }, + "next": { + "href": "https://api.acquia.com/v3/sites?limit=2&offset=2" + } + }, + "count": 2, + "total": 4, + "pagination": { + "total": 4, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890", + "name": "mysite", + "label": "My Site", + "description": "A description of my site.", + "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", + "status": "ready", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sites/f1a2b3c4-d5e6-7890-abcd-ef1234567890" + } + } + }, + { + "id": "e2b3c4d5-f6a7-8901-bcde-f12345678901", + "name": "anothersite", + "label": "Another Site", + "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", + "status": "marked-for-deletion", + "delete_at": "2025-01-01T00:00:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/sites/e2b3c4d5-f6a7-8901-bcde-f12345678901" + } + } + } + ] + } + } + } + } + } + } + }, + "New_Relic_Provisioning_API_BadRequestError": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "bad_request", + "message": "The request contains invalid or missing required fields." + } + } + } + }, + "New_Relic_Provisioning_API_ForbiddenError": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "New_Relic_Provisioning_API_InternalServerError": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + }, + "New_Relic_Provisioning_API_UnauthorizedError": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "New_Relic_Provisioning_API_NewRelicAccountCollection": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] + } + }, + "required": [ + "count", + "total", + "pagination" + ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } + } + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "entitlement_id": { + "type": "string", + "description": "Acquia entitlement UUID for this New Relic account." + }, + "subscription_id": { + "type": "string", + "description": "Acquia subscription UUID associated with this entitlement." + }, + "nr_account_id": { + "type": "string", + "description": "New Relic account ID; absent until provisioning completes." + }, + "status": { + "type": "string", + "enum": [ + "provisioning", + "active", + "deprovisioning", + "cancelled", + "transferred-out", + "failed" + ], + "description": "Lifecycle state of the New Relic account: provisioning — creation in progress; active — fully provisioned, NR account and admin invite issued; deprovisioning — cancellation in progress; cancelled — account cancelled, row retained for audit; transferred-out — account transferred out of Acquia parent, not cancelled by this service; failed — a step failed, re-trigger via a new broker event or ops tooling.\n" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Timestamp when the provisioning record was created." + } + }, + "required": [ + "entitlement_id", + "subscription_id", + "status", + "created_at" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/newrelic-accounts?filter=entitlement_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "limit": { + "href": "https://api.acquia.com/v3/newrelic-accounts?filter=entitlement_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/newrelic-accounts?filter=entitlement_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/newrelic-accounts{?filter}", + "templated": true + } + }, + "count": 1, + "total": 1, + "pagination": { + "total": 1, + "limit": 10, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "entitlement_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "subscription_id": "f9e8d7c6-b5a4-3210-fedc-ba9876543210", + "nr_account_id": "12345678", + "status": "active", + "created_at": "2026-05-26T10:00:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/newrelic-accounts?filter=entitlement_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890" + } + } + } + ] + } + } + } + } + }, + "Launch_Group_API_ForbiddenError": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "Launch_Group_API_InternalServerError": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + }, + "Launch_Group_API_NotFoundError": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "Launch_Group_API_UnauthorizedError": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "Launch_Group_API_ValidationError": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "Launch_Group_API_InvalidOperationError": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "Launch_Group_API_LaunchGroup": { + "description": "Launch group details", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the launch group.", + "example": "b2c3d4e5-f6a7-8901-bcde-f12345678901" + }, + "name": { + "type": "string", + "pattern": "^[a-zA-Z0-9]{1,52}$", + "maxLength": 52, + "description": "The name of the launch group. Alphanumeric only; maximum 52 characters. Can be changed via `PUT /launch-groups/{launchGroupId}`; renaming does not regenerate `fqdn`, so the two may permanently disagree after a rename.", + "example": "MyLaunchGroup" + }, + "description": { + "type": [ + "string", + "null" + ], + "maxLength": 512, + "description": "An optional, free-text description of the launch group. Always present in the response; null if none is currently set -- either because none was ever supplied or because a later update via `PUT /launch-groups/{launchGroupId}` cleared it.", + "example": "Marketing campaign for Q3 launch" + }, + "codebase_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the codebase this launch group belongs to.", + "example": "d3f7270e-c45f-4801-9308-5e8afe84a323" + }, + "fqdn": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$", + "description": "The Acquia-generated fully-qualified domain name customers CNAME their custom domains to. Generated once from the lowercased name the group had at creation and never regenerated afterward, including when `name` is later changed via `PUT /launch-groups/{launchGroupId}`, so `name` and `fqdn` may permanently disagree.", + "example": "mylaunchgroup-a1b2c3d-lg.prod.acquia-sites.com" + }, + "status": { + "type": "string", + "enum": [ + "idle", + "switch-in-progress", + "failed", + "degraded" + ], + "description": "The current state of the launch group. `switch-in-progress` while a publish switch is running; `failed` if the last publish switch did not complete (safe to retry); `degraded` if the group has no Published member (for example, its Published site instance was deleted at the platform level).", + "example": "idle" + } + }, + "required": [ + "id", + "name", + "description", + "codebase_id", + "fqdn", + "status" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "member-site-instances": { + "description": "The launch group's member site instances. Always present.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "domains": { + "description": "The domains assigned to the launch group. Always present.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "dns-recheck": { + "description": "Queues a DNS recheck for the launch group's domains. Always present.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "publish": { + "description": "Promotes a member to Published. Present unless `status` is `switch-in-progress`.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self", + "member-site-instances", + "domains", + "dns-recheck" + ] + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + }, + "member-site-instances": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/member-site-instances" + }, + "domains": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains" + }, + "dns-recheck": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/actions/dns-recheck" + }, + "publish": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/actions/publish" + } + }, + "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", + "name": "MyLaunchGroup", + "description": "Marketing campaign for Q3 launch", + "codebase_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", + "fqdn": "mylaunchgroup-a1b2c3d-lg.prod.acquia-sites.com", + "status": "idle" + } + } + }, + "links": { + "self": { + "operationId": "findLaunchGroupByLaunchGroupId", + "parameters": { + "launchGroupId": "$request.path.launchGroupId" + } + } + } + }, + "Launch_Group_API_LaunchGroupCollection": { + "description": "Launch group collection", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] + } + }, + "required": [ + "count", + "total", + "pagination" + ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + } + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the launch group.", + "example": "b2c3d4e5-f6a7-8901-bcde-f12345678901" + }, + "name": { + "type": "string", + "pattern": "^[a-zA-Z0-9]{1,52}$", + "maxLength": 52, + "description": "The name of the launch group. Alphanumeric only; maximum 52 characters. Can be changed via `PUT /launch-groups/{launchGroupId}`; renaming does not regenerate `fqdn`, so the two may permanently disagree after a rename.", + "example": "MyLaunchGroup" + }, + "description": { + "type": [ + "string", + "null" + ], + "maxLength": 512, + "description": "An optional, free-text description of the launch group. Always present in the response; null if none is currently set -- either because none was ever supplied or because a later update via `PUT /launch-groups/{launchGroupId}` cleared it.", + "example": "Marketing campaign for Q3 launch" + }, + "codebase_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the codebase this launch group belongs to.", + "example": "d3f7270e-c45f-4801-9308-5e8afe84a323" + }, + "fqdn": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$", + "description": "The Acquia-generated fully-qualified domain name customers CNAME their custom domains to. Generated once from the lowercased name the group had at creation and never regenerated afterward, including when `name` is later changed via `PUT /launch-groups/{launchGroupId}`, so `name` and `fqdn` may permanently disagree.", + "example": "mylaunchgroup-a1b2c3d-lg.prod.acquia-sites.com" + }, + "status": { + "type": "string", + "enum": [ + "idle", + "switch-in-progress", + "failed", + "degraded" + ], + "description": "The current state of the launch group. `switch-in-progress` while a publish switch is running; `failed` if the last publish switch did not complete (safe to retry); `degraded` if the group has no Published member (for example, its Published site instance was deleted at the platform level).", + "example": "idle" + } + }, + "required": [ + "id", + "name", + "description", + "codebase_id", + "fqdn", + "status" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "member-site-instances": { + "description": "The launch group's member site instances. Always present.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "domains": { + "description": "The domains assigned to the launch group. Always present.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "dns-recheck": { + "description": "Queues a DNS recheck for the launch group's domains. Always present.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "publish": { + "description": "Promotes a member to Published. Present unless `status` is `switch-in-progress`.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self", + "member-site-instances", + "domains", + "dns-recheck" + ] + } + } + } + ] + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/launch-groups?limit=1&offset=1" + }, + "limit": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/launch-groups?offset=1{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/launch-groups?limit=1{&offset}", + "templated": true + }, + "prev": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/launch-groups?limit=1&offset=0" + }, + "next": { + "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/launch-groups?offset=2&limit=1" + } + }, + "count": 1, + "total": 3, + "pagination": { + "total": 3, + "limit": 1, + "offset": 1 + }, + "_embedded": { + "items": [ + { + "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", + "name": "MyLaunchGroup", + "description": null, + "codebase_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", + "fqdn": "mylaunchgroup-a1b2c3d-lg.prod.acquia-sites.com", + "status": "idle", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + }, + "member-site-instances": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/member-site-instances" + }, + "domains": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains" + }, + "dns-recheck": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/actions/dns-recheck" + }, + "publish": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/actions/publish" + } + } + } + ] + } + } + } + } + }, + "Launch_Group_API_LaunchGroupMemberSiteInstance": { + "description": "Launch group member site instance details", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "site_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the member site instance's site.", + "example": "3e8ecbec-ea7c-4260-8414-ef2938c859bc" + }, + "environment_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the environment the member site instance runs in.", + "example": "d3f7270e-c45f-4801-9308-5e8afe84a323" + }, + "is_published": { + "type": "boolean", + "description": "Whether this member is currently the Published site instance serving the launch group's domains.", + "example": true + } + }, + "required": [ + "site_id", + "environment_id", + "is_published" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/member-site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.e3f7270e-c45f-4801-9308-5e8afe84a323" + } + }, + "site_id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "environment_id": "e3f7270e-c45f-4801-9308-5e8afe84a323", + "is_published": true + } + } + }, + "links": { + "self": { + "operationId": "findLaunchGroupMemberSiteInstanceByLaunchGroupIdAndSiteIdAndEnvironmentId", + "parameters": { + "launchGroupId": "$request.path.launchGroupId", + "siteId": "$request.path.siteId", + "environmentId": "$request.path.environmentId" + } + } + } + }, + "Launch_Group_API_LaunchGroupMemberSiteInstanceCollection": { + "description": "Launch group member site instance collection", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] + } + }, + "required": [ + "count", + "total", + "pagination" + ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + } + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "site_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the member site instance's site.", + "example": "3e8ecbec-ea7c-4260-8414-ef2938c859bc" + }, + "environment_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the environment the member site instance runs in.", + "example": "d3f7270e-c45f-4801-9308-5e8afe84a323" + }, + "is_published": { + "type": "boolean", + "description": "Whether this member is currently the Published site instance serving the launch group's domains.", + "example": true + } + }, + "required": [ + "site_id", + "environment_id", + "is_published" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/member-site-instances?limit=1&offset=1" + }, + "limit": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/member-site-instances?offset=1{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/member-site-instances?limit=1{&offset}", + "templated": true + }, + "prev": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/member-site-instances?limit=1&offset=0" + }, + "next": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/member-site-instances?offset=2&limit=1" + } + }, + "count": 1, + "total": 3, + "pagination": { + "total": 3, + "limit": 1, + "offset": 1 + }, + "_embedded": { + "items": [ + { + "site_id": "4a8ecbec-ea7c-4260-8414-ef2938c859bc", + "environment_id": "e3f7270e-c45f-4801-9308-5e8afe84a323", + "is_published": false, + "_links": { + "self": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/member-site-instances/4a8ecbec-ea7c-4260-8414-ef2938c859bc.e3f7270e-c45f-4801-9308-5e8afe84a323" + } + } + } + ] + } + } + } + } + }, + "Launch_Group_API_LaunchGroupDomain": { + "description": "Launch group domain details", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "description": "A domain assigned to a launch group. The group's own `fqdn` is the domain with `is_removable: false`.", + "properties": { + "name": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$", + "description": "The fully-qualified domain name.", + "example": "www.example.com" + }, + "dns_status": { + "type": "string", + "enum": [ + "pending", + "dns-updated", + "dns-not-updated", + "not-found" + ], + "description": "Cached DNS cutover status as of the last recheck. `pending` when the domain does not resolve yet; `dns-not-updated` when it resolves, but not to the launch group's `fqdn`; `dns-updated` when it resolves to the launch group's `fqdn`; `not-found` when the domain is not registered on the Published site instance. The launch group's own `fqdn` is always `dns-updated`. Updated only by `POST /launch-groups/{launchGroupId}/actions/dns-recheck`.", + "example": "pending" + }, + "last_checked_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "Timestamp of the last DNS status check for this domain. Always present; null until the first DNS recheck.", + "example": "2026-07-20T14:32:00Z" + }, + "is_removable": { + "type": "boolean", + "description": "Whether the domain can be removed from the launch group. `false` only for the launch group's own `fqdn`; `true` for every customer-assigned domain.", + "example": true + } + }, + "required": [ + "name", + "dns_status", + "last_checked_at", + "is_removable" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains/www.example.com" + } + }, + "name": "www.example.com", + "dns_status": "dns-updated", + "last_checked_at": "2026-07-20T14:32:00Z", + "is_removable": true + } + } + }, + "links": { + "self": { + "operationId": "findLaunchGroupDomainByLaunchGroupIdAndDomainName", + "parameters": { + "launchGroupId": "$request.path.launchGroupId", + "domainName": "$request.path.domainName" + } + } + } + }, + "Launch_Group_API_LaunchGroupDomainCollection": { + "description": "Launch group domain collection", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] + } + }, + "required": [ + "count", + "total", + "pagination" + ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "launch-group": { + "description": "The launch group these domains are assigned to. Always present.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "dns-recheck": { + "description": "Queues a DNS recheck for the launch group's domains. Always present.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self", + "launch-group", + "dns-recheck" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "description": "A domain assigned to a launch group. The group's own `fqdn` is the domain with `is_removable: false`.", + "properties": { + "name": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$", + "description": "The fully-qualified domain name.", + "example": "www.example.com" + }, + "dns_status": { + "type": "string", + "enum": [ + "pending", + "dns-updated", + "dns-not-updated", + "not-found" + ], + "description": "Cached DNS cutover status as of the last recheck. `pending` when the domain does not resolve yet; `dns-not-updated` when it resolves, but not to the launch group's `fqdn`; `dns-updated` when it resolves to the launch group's `fqdn`; `not-found` when the domain is not registered on the Published site instance. The launch group's own `fqdn` is always `dns-updated`. Updated only by `POST /launch-groups/{launchGroupId}/actions/dns-recheck`.", + "example": "pending" + }, + "last_checked_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "Timestamp of the last DNS status check for this domain. Always present; null until the first DNS recheck.", + "example": "2026-07-20T14:32:00Z" + }, + "is_removable": { + "type": "boolean", + "description": "Whether the domain can be removed from the launch group. `false` only for the launch group's own `fqdn`; `true` for every customer-assigned domain.", + "example": true + } + }, + "required": [ + "name", + "dns_status", + "last_checked_at", + "is_removable" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains?limit=1&offset=1" + }, + "limit": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains?offset=1{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains?limit=1{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains?limit=1&offset=1{&filter}", + "templated": true + }, + "launch-group": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + }, + "dns-recheck": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/actions/dns-recheck" + }, + "prev": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains?limit=1&offset=0" + }, + "next": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains?offset=2&limit=1" + } + }, + "count": 1, + "total": 3, + "pagination": { + "total": 3, + "limit": 1, + "offset": 1 + }, + "_embedded": { + "items": [ + { + "name": "www.example.com", + "dns_status": "pending", + "last_checked_at": null, + "is_removable": true, + "_links": { + "self": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains/www.example.com" + } + } + } + ] + } + } + } + } + }, + "Launch_Group_API_CreateLaunchGroupResponse": { + "description": "Launch group creation started", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Launch group creation started.", + "description": "Confirmation message that launch group creation has been started." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + } + }, + "message": "Launch group creation started." + } + } + } + }, + "Launch_Group_API_UpdateLaunchGroupResponse": { + "description": "Launch group update started", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Launch group update started.", + "description": "Confirmation message that launch group update has been started." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + } + }, + "message": "Launch group update started." + } + } + } + }, + "Launch_Group_API_DeleteLaunchGroupResponse": { + "description": "Launch group deletion started", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Launch group deletion started.", + "description": "Confirmation message that launch group deletion has been started." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + } + }, + "message": "Launch group deletion started." + } + } + } + }, + "Launch_Group_API_AddLaunchGroupMemberSiteInstanceResponse": { + "description": "Launch group member addition started", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Launch group member addition started.", + "description": "Confirmation message that adding the member has been started." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/member-site-instances/4a8ecbec-ea7c-4260-8414-ef2938c859bc.e3f7270e-c45f-4801-9308-5e8afe84a323" + } + }, + "message": "Launch group member addition started." + } + } + } + }, + "Launch_Group_API_DeleteLaunchGroupMemberSiteInstanceResponse": { + "description": "Launch group member deletion started", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Launch group member deletion started.", + "description": "Confirmation message that deleting (detaching) the member has been started." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/member-site-instances/4a8ecbec-ea7c-4260-8414-ef2938c859bc.e3f7270e-c45f-4801-9308-5e8afe84a323" + } + }, + "message": "Launch group member deletion started." + } + } + } + }, + "Launch_Group_API_PublishLaunchGroupResponse": { + "description": "Publish switch started", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Publish switch started.", + "description": "Confirmation message that the publish switch has been started." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + } + }, + "message": "Publish switch started." + } + } + } + }, + "Launch_Group_API_AssignLaunchGroupDomainResponse": { + "description": "Domain assignment started", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Domain assignment started.", + "description": "Confirmation message that the domain assignment has been started." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains/www.example.com" + } + }, + "message": "Domain assignment started." + } + } + } + }, + "Launch_Group_API_RemoveLaunchGroupDomainResponse": { + "description": "Domain removal started", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Domain removal started.", + "description": "Confirmation message that the domain removal has been started." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901/domains/www.example.com" + } + }, + "message": "Domain removal started." + } + } + } + }, + "Launch_Group_API_DnsRecheckResponse": { + "description": "DNS recheck queued", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "DNS recheck queued.", + "description": "Confirmation message that a DNS recheck has been queued for all domains assigned to the launch group." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/launch-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + } + }, + "message": "DNS recheck queued." + } + } + } + }, + "CDN_API_ValidationError": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "example": { + "error": "validation_failed", + "message": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + } + } + }, + "CDN_API_UnauthorizedError": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "unauthorized", + "message": "You do not have permission to access this resource." + } + } + } + }, + "CDN_API_ForbiddenError": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "forbidden", + "message": "You do not have permission to perform this action." + } + } + } + }, + "CDN_API_NotFoundError": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "CDN_API_InvalidOperationError": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "CDN_API_InternalServerError": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + } + } + }, + "CDN_API_DomainCollection": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] + } + }, + "required": [ + "count", + "total", + "pagination" + ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "sort": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" + }, + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + } + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "description": "CDN domain resource.", + "properties": { + "domain": { + "type": "string", + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]?(\\.[a-zA-Z]{2,})+$", + "description": "The fully qualified domain name." + }, + "subscription_uuid": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "The unique identifier of the subscription the domain belongs to." + }, + "environment_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "The environment identifier associated with the domain." + }, + "application_name": { + "type": "string", + "description": "The name of the application associated with the domain." + }, + "status": { + "type": "string", + "description": "The current status of the domain.", + "enum": [ + "connecting-to-edge", + "domain-validation-pending", + "ready-for-dns-repointing", + "configuration-failed", + "configured" + ] + }, + "ownership_validation_cname": { + "type": "string", + "description": "The CNAME record that must be created on the domain's DNS to validate ownership." + }, + "bandwidth_usage_tb": { + "type": "number", + "format": "float", + "description": "The bandwidth usage for the domain in terabytes." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the domain was created." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the domain was last updated." + } + }, + "required": [ + "domain", + "subscription_uuid", + "environment_id", + "status", + "application_name", + "ownership_validation_cname", + "bandwidth_usage_tb", + "created_at", + "updated_at" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ "href" ], "examples": [ @@ -128930,82 +159396,516 @@ } ] } - }, - "required": [ - "self" + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + "examples": { + "domains_response": { + "summary": "Domain collection with pagination", + "value": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?limit=2&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?limit=2{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?limit=2&offset=0{&filter}", + "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?limit=2&offset=0{&sort}", + "templated": true + }, + "next": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains?limit=2&offset=2" + } + }, + "count": 2, + "total": 50, + "pagination": { + "total": 50, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "domain": "example.com", + "subscription_uuid": "12345678-1234-1234-1234-123456789012", + "environment_id": "0c3f0f5f-5727-4838-9459-2d90ee1cf7c1", + "application_name": "my-application", + "status": "configured", + "created_at": "2024-01-15T10:30:00Z", + "updated_at": "2024-01-20T15:45:00Z", + "ownership_validation_cname": "_acme-challenge.example.com", + "bandwidth_usage_tb": 1.25, + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains/example.com" + } + } + }, + { + "domain": "test.example.org", + "subscription_uuid": "12345678-1234-1234-1234-123456789012", + "environment_id": "1d4f1f6f-6838-5949-a560-3e01ff2cf8d2", + "application_name": "test-application", + "status": "connecting-to-edge", + "created_at": "2024-01-18T08:15:00Z", + "ownership_validation_cname": "_acme-challenge.example.com", + "bandwidth_usage_tb": 1.25, + "updated_at": "2024-01-18T08:15:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains/test.example.org" + } + } + } + ] + } + } + } + } + } + } + }, + "CDN_API_Domain": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "description": "CDN domain resource.", + "properties": { + "domain": { + "type": "string", + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]?(\\.[a-zA-Z]{2,})+$", + "description": "The fully qualified domain name." + }, + "subscription_uuid": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "The unique identifier of the subscription the domain belongs to." + }, + "environment_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "The environment identifier associated with the domain." + }, + "application_name": { + "type": "string", + "description": "The name of the application associated with the domain." + }, + "status": { + "type": "string", + "description": "The current status of the domain.", + "enum": [ + "connecting-to-edge", + "domain-validation-pending", + "ready-for-dns-repointing", + "configuration-failed", + "configured" + ] + }, + "ownership_validation_cname": { + "type": "string", + "description": "The CNAME record that must be created on the domain's DNS to validate ownership." + }, + "bandwidth_usage_tb": { + "type": "number", + "format": "float", + "description": "The bandwidth usage for the domain in terabytes." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the domain was created." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the domain was last updated." + } + }, + "required": [ + "domain", + "subscription_uuid", + "environment_id", + "status", + "application_name", + "ownership_validation_cname", + "bandwidth_usage_tb", + "created_at", + "updated_at" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "domain": "example.com", + "subscription_uuid": "12345678-1234-1234-1234-123456789012", + "environment_id": "0c3f0f5f-5727-4838-9459-2d90ee1cf7c1", + "application_name": "my-application", + "status": "configured", + "ownership_validation_cname": "_acme-challenge.example.com", + "bandwidth_usage_tb": 1.25, + "created_at": "2024-01-15T10:30:00Z", + "updated_at": "2024-01-20T15:45:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains/example.com" + } + } + } + } + }, + "links": { + "self": { + "operationId": "findDomainBySubscriptionUuidAndDomainName", + "parameters": { + "subscriptionUuid": "$request.path.subscriptionUuid", + "domainName": "$request.path.domainName" + } + } + } + }, + "CDN_API_DomainCdnProvisioningAccepted": { + "description": "Accepted - Provisioning in progress", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "description": "The target URI of the link (can be a URI or URI template)" }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "_links" + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } - ] + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } - } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "The domain provisioning has been started.", + "description": "Confirmation message" } } } @@ -129014,60 +159914,587 @@ "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc" - }, - "codebase": { - "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains/example.com" } }, - "id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", - "name": "environment_3e8ecbec-ea7c-4260-8414-ef2938c859bc", - "label": "Environment_3e8ecbec-ea7c-4260-8414-ef2938c859bc", - "description": "Description of 3e8ecbec-ea7c-4260-8414-ef2938c859bc", - "status": "normal", - "flags": { - "production": false, - "protection_mode": false - }, - "properties": { - "version": "8.3", - "max_execution_time": 10, - "memory_limit": 192, - "apcu": 32, - "client_max_body_size": 192, - "max_input_vars": 1000, - "max_post_size": 256, - "memcached_limit": 128, - "upload_max_filesize": 192, - "operating_system": "focal" + "message": "The domain provisioning has been started." + } + } + } + }, + "CDN_API_DomainCdnDeprovisioningAccepted": { + "description": "Accepted - Deprovisioning in progress", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "The domain deprovisioning has been started.", + "description": "Confirmation message" + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/domains/example.com" + } }, - "reference": "tag/v3.1", - "code_switch_status": "IDLE", - "ssh_url": "ssh://site.dev@sitedev.ssh.hosted.acquia-sites.com", - "_embedded": { - "codebase": { - "id": "d3f7270e-c45f-4801-9308-5e8afe84a323", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323" + "message": "The domain deprovisioning has been started." + } + } + } + }, + "CDN_API_PurgeAccepted": { + "description": "Accepted - Purge request submitted", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "The purge request has been submitted.", + "description": "Confirmation message" } } } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/0c3f0f5f-5727-4838-9459-2d90ee1cf7c1/actions/purge-cdn" + } + }, + "message": "The purge request has been submitted." + } + } + } + }, + "CDN_API_SecurityRuleSet": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": 1, + "description": "The unique identifier of the security ruleset." + }, + "name": { + "type": "string", + "description": "The display name of the security ruleset." + }, + "is_enabled": { + "type": "boolean", + "description": "Indicates whether the security ruleset is enabled." + }, + "description": { + "type": "string", + "description": "The description of the security ruleset." + }, + "type": { + "type": "string", + "description": "The type of the security ruleset.", + "enum": [ + "owasp", + "acquia-managed" + ] + } + }, + "required": [ + "id", + "name", + "is_enabled" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "id": 1, + "name": "OWASP Top 10", + "is_enabled": true, + "description": "OWASP Top 10 security ruleset", + "type": "owasp", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets/1" + } } } } }, "links": { "self": { - "operationId": "findEnvironmentByEnvironmentId", + "operationId": "findSecurityRuleSetBySubscriptionUuidAndRuleSetId", "parameters": { - "environmentId": "$request.path.environmentId" + "subscriptionUuid": "$request.path.subscriptionUuid", + "ruleSetId": "$request.path.ruleSetId" } } } }, - "Environment_Service_API_EnvironmentCollection": { - "description": "Environment collection", + "CDN_API_SecurityRuleSetCollection": { + "description": "OK", "content": { "application/hal+json": { "schema": { @@ -129939,118 +161366,37 @@ "allOf": [ { "type": "object", - "description": "Environment properties", "properties": { "id": { - "type": "string", - "description": "The unique identifier of the environment", - "pattern": "^[a-zA-Z0-9-]+$" + "type": "integer", + "minimum": 1, + "description": "The unique identifier of the security ruleset." }, "name": { "type": "string", - "description": "The machine name of the environment" + "description": "The display name of the security ruleset." }, - "label": { - "type": "string", - "description": "The human-readable label of the environment" + "is_enabled": { + "type": "boolean", + "description": "Indicates whether the security ruleset is enabled." }, "description": { "type": "string", - "description": "A description of the environment" - }, - "status": { - "type": "string", - "description": "The current status of the environment", - "enum": [ - "normal", - "allocated", - "launching", - "killed", - "cancelled", - "stopped" - ] - }, - "flags": { - "type": "object", - "description": "Environment configuration flags", - "additionalProperties": { - "type": "boolean" - } - }, - "properties": { - "type": "object", - "description": "Environment PHP and server properties", - "properties": { - "version": { - "type": "string", - "description": "PHP version" - }, - "max_execution_time": { - "type": "integer", - "description": "Maximum execution time in seconds" - }, - "memory_limit": { - "type": "integer", - "description": "Memory limit in MB" - }, - "apcu": { - "type": "integer", - "description": "APCu cache size in MB" - }, - "client_max_body_size": { - "type": "integer", - "description": "Maximum client body size in MB" - }, - "max_input_vars": { - "type": "integer", - "description": "Maximum number of input variables" - }, - "max_post_size": { - "type": "integer", - "description": "Maximum POST size in MB" - }, - "memcached_limit": { - "type": "integer", - "description": "Memcached limit in MB" - }, - "upload_max_filesize": { - "type": "integer", - "description": "Maximum upload file size in MB" - }, - "operating_system": { - "type": "string", - "description": "Operating system codename" - } - } - }, - "reference": { - "type": "string", - "description": "The code reference (branch, tag, or commit) deployed to this environment" + "description": "The description of the security ruleset." }, - "code_switch_status": { + "type": { "type": "string", - "description": "The status of the Switch Code action", + "description": "The type of the security ruleset.", "enum": [ - "IDLE", - "IN_PROGRESS" + "owasp", + "acquia-managed" ] - }, - "ssh_url": { - "type": "string", - "format": "uri", - "description": "The SSH connection string for accessing this environment" } }, "required": [ "id", "name", - "label", - "status", - "flags", - "properties", - "reference", - "code_switch_status", - "ssh_url" + "is_enabled" ] }, { @@ -130206,59 +161552,471 @@ } ] }, + "examples": { + "security_rule_sets_response": { + "summary": "Security rulesets collection with pagination", + "value": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets?limit=2&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets?limit=2{&offset}", + "templated": true + } + }, + "count": 2, + "total": 5, + "pagination": { + "total": 5, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": 123, + "name": "OWASP Core Ruleset", + "is_enabled": true, + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets/123" + } + } + }, + { + "id": 456, + "name": "Bot Protection", + "is_enabled": false, + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets/456" + } + } + } + ] + } + } + } + } + } + } + }, + "CDN_API_SecurityRuleSetUpdated": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "The security ruleset has been updated.", + "description": "Confirmation message" + } + } + } + ] + }, "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/sites/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/sites/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/sites/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2{&offset}", - "templated": true + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rulesets/123" } }, - "count": 1, - "total": 1, - "pagination": { - "total": 1, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", - "name": "dev", - "label": "Dev", - "description": "Development environment", - "status": "normal", - "reference": "branch/main", - "code_switch_status": "IDLE", - "ssh_url": "ssh://site.dev@sitedev.ssh.hosted.acquia-sites.com", - "flags": { - "production": false, - "protection_mode": false + "message": "The security ruleset has been updated." + } + } + } + }, + "CDN_API_IpRule": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": 1, + "description": "The unique identifier of the IP rule." }, - "properties": { - "version": "8.3" + "display_name": { + "type": "string", + "description": "The display name of the IP rule." + }, + "action": { + "type": "string", + "enum": [ + "block", + "allow" + ], + "description": "The action applied when the rule matches." + }, + "description": { + "type": "string", + "description": "The description of the IP rule." + }, + "ips": { + "type": "array", + "description": "The IPs or CIDR blocks associated with the rule.", + "items": { + "type": "string", + "description": "An IP address or CIDR block." + } + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the rule was created." }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the rule was last updated." + } + }, + "required": [ + "id", + "display_name", + "action", + "ips", + "created_at", + "updated_at" + ] + }, + { + "type": "object", + "properties": { "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc" + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } - } - ] + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "id": 101, + "display_name": "Block office VPN", + "action": "allow", + "description": "Allow traffic from the office VPN", + "ips": [ + "203.0.113.0/24" + ], + "created_at": "2026-05-01T12:00:00Z", + "updated_at": "2026-05-10T09:30:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/101" + } } } } + }, + "links": { + "self": { + "operationId": "findIpRuleBySubscriptionUuidAndIpRuleId", + "parameters": { + "subscriptionUuid": "$request.path.subscriptionUuid", + "ipRuleId": "$request.path.ipRuleId" + } + } } }, - "Environment_Service_API_FilterableEnvironmentCollection": { - "description": "Environment collection", + "CDN_API_IpRuleCollection": { + "description": "OK", "content": { "application/hal+json": { "schema": { @@ -131008,61 +162766,458 @@ "self": { "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - } + ] } - ] + } } - }, + } + ], + "examples": [ { "_links": { "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", "templated": true } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, "_embedded": { "items": [ { - "id": "111e4567-e89b-11d3-a789-426614174000", + "id": "1", "name": "Resource 1", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + "href": "https://api.acquia.com/v3/resources/1" } } }, { - "id": "222e4567-e89b-11d3-a789-426614174000", + "id": "2", "name": "Resource 2", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + "href": "https://api.acquia.com/v3/resources/2" } } } @@ -131072,44 +163227,30 @@ { "_links": { "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", "templated": true } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 - }, "_embedded": { "items": [ { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", + "id": "3", + "name": "Resource 3", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + "href": "https://api.acquia.com/v3/resources/3" } } }, { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", + "id": "4", + "name": "Resource 4", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + "href": "https://api.acquia.com/v3/resources/4" } } } @@ -131292,7 +163433,7 @@ "_links": { "type": "object", "properties": { - "filter": { + "sort": { "allOf": [ { "type": "object", @@ -131367,7 +163508,7 @@ ] } ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" } }, "additionalProperties": { @@ -131436,10 +163577,10 @@ { "_links": { "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", "templated": true } }, @@ -131465,39 +163606,6 @@ } ] } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" - } - } - }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" - } - } - } - ] - } } ] }, @@ -131513,118 +163621,54 @@ "allOf": [ { "type": "object", - "description": "Environment properties", "properties": { "id": { - "type": "string", - "description": "The unique identifier of the environment", - "pattern": "^[a-zA-Z0-9-]+$" + "type": "integer", + "minimum": 1, + "description": "The unique identifier of the IP rule." }, - "name": { + "display_name": { "type": "string", - "description": "The machine name of the environment" + "description": "The display name of the IP rule." }, - "label": { + "action": { "type": "string", - "description": "The human-readable label of the environment" + "enum": [ + "block", + "allow" + ], + "description": "The action applied when the rule matches." }, "description": { "type": "string", - "description": "A description of the environment" - }, - "status": { - "type": "string", - "description": "The current status of the environment", - "enum": [ - "normal", - "allocated", - "launching", - "killed", - "cancelled", - "stopped" - ] - }, - "flags": { - "type": "object", - "description": "Environment configuration flags", - "additionalProperties": { - "type": "boolean" - } + "description": "The description of the IP rule." }, - "properties": { - "type": "object", - "description": "Environment PHP and server properties", - "properties": { - "version": { - "type": "string", - "description": "PHP version" - }, - "max_execution_time": { - "type": "integer", - "description": "Maximum execution time in seconds" - }, - "memory_limit": { - "type": "integer", - "description": "Memory limit in MB" - }, - "apcu": { - "type": "integer", - "description": "APCu cache size in MB" - }, - "client_max_body_size": { - "type": "integer", - "description": "Maximum client body size in MB" - }, - "max_input_vars": { - "type": "integer", - "description": "Maximum number of input variables" - }, - "max_post_size": { - "type": "integer", - "description": "Maximum POST size in MB" - }, - "memcached_limit": { - "type": "integer", - "description": "Memcached limit in MB" - }, - "upload_max_filesize": { - "type": "integer", - "description": "Maximum upload file size in MB" - }, - "operating_system": { - "type": "string", - "description": "Operating system codename" - } + "ips": { + "type": "array", + "description": "The IPs or CIDR blocks associated with the rule.", + "items": { + "type": "string", + "description": "An IP address or CIDR block." } }, - "reference": { - "type": "string", - "description": "The code reference (branch, tag, or commit) deployed to this environment" - }, - "code_switch_status": { + "created_at": { "type": "string", - "description": "The status of the Switch Code action", - "enum": [ - "IDLE", - "IN_PROGRESS" - ] + "format": "date-time", + "description": "The timestamp when the rule was created." }, - "ssh_url": { + "updated_at": { "type": "string", - "format": "uri", - "description": "The SSH connection string for accessing this environment" + "format": "date-time", + "description": "The timestamp when the rule was last updated." } }, "required": [ "id", - "name", - "label", - "status", - "flags", - "properties", - "reference", - "code_switch_status", - "ssh_url" + "display_name", + "action", + "ips", + "created_at", + "updated_at" ] }, { @@ -131780,555 +163824,635 @@ } ] }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/codebases/d3f7270e-c45f-4801-9308-5e8afe84a323/environments?limit=2&offset=0{&filter}", - "templated": true - } - }, - "count": 1, - "total": 1, - "pagination": { - "total": 1, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", - "name": "dev", - "label": "Dev", - "description": "Development environment", - "status": "normal", - "reference": "branch/main", - "code_switch_status": "IDLE", - "ssh_url": "ssh://site.dev@sitedev.ssh.hosted.acquia-sites.com", - "flags": { - "production": false, - "protection_mode": false + "examples": { + "ip_rules_response": { + "summary": "IP rules collection with pagination", + "value": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?limit=2&offset=0" }, - "properties": { - "version": "8.3" + "limit": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?offset=0{&limit}", + "templated": true }, - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc" - } + "offset": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?limit=2{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?limit=2&offset=0{&filter}", + "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?limit=2&offset=0{&sort}", + "templated": true + }, + "next": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules?offset=2&limit=2" } + }, + "count": 2, + "total": 5, + "pagination": { + "total": 5, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": 101, + "display_name": "Block office IPs", + "action": "block", + "description": "Blocks office IP ranges.", + "ips": [ + "192.0.2.10", + "198.51.100.0/24" + ], + "created_at": "2026-05-01T12:00:00Z", + "updated_at": "2026-05-10T09:30:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/101" + } + } + }, + { + "id": 102, + "display_name": "Allow support", + "action": "allow", + "description": "Allows support traffic.", + "ips": [ + "203.0.113.5" + ], + "created_at": "2026-05-02T08:15:00Z", + "updated_at": "2026-05-11T13:45:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/102" + } + } + } + ] } - ] + } } } } } }, - "Environment_Service_API_SiteInstance": { - "description": "Site Instance details", + "CDN_API_IpRuleCreated": { + "description": "OK", "content": { "application/hal+json": { "schema": { "allOf": [ { - "type": "object", - "description": "Site Instance properties", - "properties": { - "site_id": { - "type": "string", - "description": "The unique identifier of the site", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "environment_id": { - "type": "string", - "description": "The unique identifier of the environment", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "status": { - "type": "string", - "description": "The current status of the site instance", - "enum": [ - "active", - "creating", - "create-failed", - "updating", - "update-failed", - "deleting", - "deleted", - "delete-failed" - ] - }, - "health_status": { + "allOf": [ + { "type": "object", - "description": "Health status information for the site instance", "properties": { - "code": { - "type": "string", - "description": "Health status code" - }, - "summary": { - "type": "string", - "description": "Summary of the health status" + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - "details": { - "type": "string", - "description": "Detailed health status information" + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "code", - "summary", - "details" + "_links" ] }, - "domains": { - "type": "array", - "description": "List of domains associated with the site instance", - "items": { - "type": "string" - } - }, - "deployment_order": { - "type": [ - "integer", - "null" - ], - "description": "The order in which this site instance is deployed relative to others.", - "example": 1 - }, - "delete_at": { - "type": [ - "string", - "null" - ], - "format": "date-time", - "description": "The scheduled deletion date-time for this site instance, if set." - }, - "date_marked_for_deletion": { - "type": [ - "string", - "null" - ], - "format": "date-time", - "description": "The date-time when this site instance was marked for deletion." - }, - "deployed_vcs_ref": { - "type": "string", - "description": "The VCS reference (e.g. branch or tag) that is currently deployed on this site instance.", - "example": "MT1.0.10" - }, - "code_hash": { - "type": "string", - "description": "The commit hash of the code currently deployed on this site instance.", - "example": "f70f0eaffa3bdde6622d2a3aca1a5eb2034dd899" - }, - "protection_mode": { - "type": [ - "object", - "null" - ], - "description": "The current protection mode of the site instance", + { + "type": "object", "properties": { - "is_enabled": { - "type": "boolean", - "description": "Indicates whether the protection mode is enabled for the site instance" - }, - "is_inherited": { - "type": "boolean", - "description": "Indicates whether the protection mode is inherited from the environment" + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "is_enabled", - "is_inherited" + "message" ] } - }, - "required": [ - "site_id", - "environment_id", - "status", - "health_status", - "domains" ] }, { "type": "object", "properties": { - "_links": { + "message": { + "type": "string", + "const": "The IP rule has been created.", + "description": "Confirmation message" + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/101" + } + }, + "message": "The IP rule has been created." + } + } + } + }, + "CDN_API_IpRuleUpdated": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "_links": { "type": "object", - "description": "HAL link object", + "description": "HAL links for the resource", "properties": { - "href": { - "type": "string", - "anyOf": [ + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, "required": [ - "href" + "self" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] }, - "_embedded": { + { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] } - }, - "required": [ - "_links" ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "The IP rule has been updated.", + "description": "Confirmation message" + } + } } ] }, "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/101" } }, - "site_id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", - "environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", - "status": "active", - "health_status": { - "code": "OK", - "summary": "The health status is OK.", - "details": "The site instance is active" - }, - "domains": [ - "example.com", - "example-2.com" - ], - "protection_mode": { - "is_enabled": true, - "is_inherited": true - }, - "deployment_order": 2, - "deployed_vcs_ref": "main", - "code_hash": "f70f0eaffa3bdde6622d2a3aca1a5eb2034dd899" - } - } - }, - "links": { - "self": { - "operationId": "findSiteInstanceBySiteIdAndEnvironmentId", - "parameters": { - "siteId": "$request.path.siteId", - "environmentId": "$request.path.environmentId" + "message": "The IP rule has been updated." } } } }, - "Environment_Service_API_Domain": { - "description": "Domain details", + "CDN_API_IpRuleDeleted": { + "description": "OK", "content": { "application/hal+json": { "schema": { "allOf": [ { - "type": "object", - "description": "Domain properties", - "properties": { - "name": { - "type": "string", - "description": "The domain name." - }, - "is_managed": { - "type": "boolean", - "description": "Whether the domain is managed by Acquia." - } - }, - "required": [ - "name", - "is_managed" - ] - }, - { - "type": "object", - "properties": { - "_links": { + "allOf": [ + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "_links": { "type": "object", - "description": "HAL link object", + "description": "HAL links for the resource", "properties": { - "href": { - "type": "string", - "anyOf": [ + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, "required": [ - "href" + "self" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] }, - "_embedded": { + { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] } - }, - "required": [ - "_links" ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "The IP rule has been deleted.", + "description": "Confirmation message" + } + } } ] }, "example": { - "name": "example.com", - "is_managed": false, "_links": { "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains/example.com" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/ip-rules/101" } - } - } - } - }, - "links": { - "self": { - "operationId": "findDomainBySiteIdAndEnvironmentIdAndDomainName", - "parameters": { - "siteId": "$request.path.siteId", - "environmentId": "$request.path.environmentId", - "domainName": "$request.path.domainName" + }, + "message": "The IP rule has been deleted." } } } }, - "Environment_Service_API_DomainCollection": { - "description": "Domain collection", + "CDN_API_CustomRuleCollection": { + "description": "OK", "content": { "application/hal+json": { "schema": { @@ -133066,853 +165190,120 @@ "total": 6, "pagination": { "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 - }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - } - ] - }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "filter": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" - } - } - }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" - } - } - } - ] - } - } - ] - }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "sort": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" } - ] + } } - } + ] } - } - ], - "examples": [ + }, { "_links": { "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", "templated": true } }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, "_embedded": { "items": [ { - "id": "1", + "id": "111e4567-e89b-11d3-a789-426614174000", "name": "Resource 1", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/1" + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" } } }, { - "id": "2", + "id": "222e4567-e89b-11d3-a789-426614174000", "name": "Resource 2", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/2" + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" } } } @@ -133933,20 +165324,236 @@ "allOf": [ { "type": "object", - "description": "Domain properties", "properties": { - "name": { + "id": { + "type": "integer", + "minimum": 1, + "description": "The unique identifier of the custom security rule." + }, + "display_name": { "type": "string", - "description": "The domain name." + "description": "The display name of the custom security rule." }, - "is_managed": { - "type": "boolean", - "description": "Whether the domain is managed by Acquia." + "action": { + "type": "string", + "enum": [ + "block", + "allow", + "alert" + ], + "description": "The action applied when the rule matches." + }, + "priority": { + "type": "integer", + "minimum": 1, + "description": "The priority order for the rule. Lower values are evaluated first.\nPriorities must be unique within a subscription — creating or\nupdating a rule with a priority already in use replaces the\nexisting rule at that priority.\n" + }, + "domains": { + "type": "array", + "description": "The domains the rule applies to.", + "items": { + "type": "string", + "description": "A domain name." + } + }, + "paths": { + "type": "array", + "description": "The paths the rule applies to.", + "items": { + "type": "string", + "description": "A path pattern." + } + }, + "mapped_domains_count": { + "type": "integer", + "description": "The number of domains the rule is mapped to." + }, + "targets": { + "type": "array", + "description": "Conditions that must match for the rule to fire.", + "items": { + "oneOf": [ + { + "description": "Range match for IP or ASN ranges.", + "type": "object", + "required": [ + "attribute", + "criteria", + "value" + ], + "additionalProperties": false, + "properties": { + "attribute": { + "type": "string", + "description": "The request attribute the rule inspects.", + "enum": [ + "source-ip", + "asn" + ] + }, + "criteria": { + "type": "string", + "description": "How `value` is compared against `attribute`.", + "enum": [ + "range" + ] + }, + "value": { + "type": "object", + "description": "Range bounds for IP or ASN ranges.", + "additionalProperties": false, + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "type": "string", + "description": "The start of the range." + }, + "to": { + "type": "string", + "description": "The end of the range." + } + } + } + } + }, + { + "description": "Value-list match for non-header, non-query attributes.", + "type": "object", + "required": [ + "attribute", + "criteria", + "value" + ], + "additionalProperties": false, + "properties": { + "attribute": { + "type": "string", + "description": "The request attribute the rule inspects.", + "enum": [ + "source-ip", + "country", + "method", + "path", + "asn" + ] + }, + "criteria": { + "type": "string", + "description": "How `value` is compared against `attribute`.", + "enum": [ + "equals", + "contains", + "regex" + ] + }, + "value": { + "type": "object", + "description": "A list of candidate values combined with OR.", + "additionalProperties": false, + "required": [ + "values" + ], + "properties": { + "values": { + "type": "array", + "description": "The list of values.", + "items": { + "type": "string", + "description": "A value." + } + } + } + } + } + }, + { + "description": "Key-value match for header or query-string attributes.", + "type": "object", + "required": [ + "attribute", + "criteria", + "value" + ], + "additionalProperties": false, + "properties": { + "attribute": { + "type": "string", + "description": "The request attribute the rule inspects.", + "enum": [ + "header", + "query-string" + ] + }, + "criteria": { + "type": "string", + "description": "How `value` is compared against `attribute`.", + "enum": [ + "equals", + "contains", + "regex" + ] + }, + "value": { + "type": "object", + "description": "Key-value matchers for header or query-string attributes.", + "additionalProperties": false, + "required": [ + "key_value_pairs" + ], + "properties": { + "key_value_pairs": { + "type": "array", + "description": "The list of key-value pairs.", + "items": { + "type": "object", + "description": "A key-value pair.", + "required": [ + "key", + "value" + ], + "properties": { + "key": { + "type": "string", + "description": "The header or query-parameter name." + }, + "value": { + "type": "string", + "description": "The expected value." + } + } + } + } + } + } + } + } + ] + } + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the rule was created." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the rule was last updated." } }, "required": [ - "name", - "is_managed" + "id", + "display_name", + "action", + "priority", + "domains", + "paths", + "created_at", + "updated_at", + "targets" ] }, { @@ -134102,513 +165709,337 @@ } ] }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains?limit=2{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains?limit=2&offset=0{&filter}", - "templated": true - }, - "sort": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains?limit=2&offset=0{&sort}", - "templated": true - } - }, - "count": 1, - "total": 1, - "pagination": { - "total": 1, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "name": "example.com", - "is_managed": false, - "_links": { - "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains/example.com" - } + "examples": { + "custom_rules_response": { + "summary": "Custom rules collection with pagination", + "value": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules?limit=2&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules?limit=2{&offset}", + "templated": true } + }, + "count": 2, + "total": 5, + "pagination": { + "total": 5, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": 301, + "display_name": "Block bad bots", + "action": "block", + "priority": 1, + "domains": [ + "example.com" + ], + "paths": [ + "/api/*" + ], + "targets": [ + { + "attribute": "source-ip", + "criteria": "range", + "value": { + "from": "10.0.0.0", + "to": "10.0.0.255" + } + } + ], + "created_at": "2026-05-01T12:00:00Z", + "updated_at": "2026-05-10T09:30:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/301" + } + } + }, + { + "id": 302, + "display_name": "Alert login scans", + "action": "alert", + "priority": 2, + "domains": [ + "shop.example.com" + ], + "paths": [ + "/login" + ], + "targets": [ + { + "attribute": "path", + "criteria": "equals", + "value": { + "values": [ + "/login" + ] + } + } + ], + "created_at": "2026-05-02T08:15:00Z", + "updated_at": "2026-05-11T13:45:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/302" + } + } + } + ] } - ] + } } } } } }, - "Environment_Service_API_DomainStatus": { - "description": "Domain DNS status details", + "CDN_API_CustomRule": { + "description": "OK", "content": { "application/hal+json": { "schema": { "allOf": [ { "type": "object", - "description": "Domain DNS status properties", "properties": { - "hostname": { - "type": "string", - "description": "The domain name." + "id": { + "type": "integer", + "minimum": 1, + "description": "The unique identifier of the custom security rule." }, - "site_id": { + "display_name": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Identifier of the site this domain belongs to." + "description": "The display name of the custom security rule." }, - "environment_id": { + "action": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Identifier of the environment this domain belongs to." + "enum": [ + "block", + "allow", + "alert" + ], + "description": "The action applied when the rule matches." }, - "ip_addresses": { + "priority": { + "type": "integer", + "minimum": 1, + "description": "The priority order for the rule. Lower values are evaluated first.\nPriorities must be unique within a subscription — creating or\nupdating a rule with a priority already in use replaces the\nexisting rule at that priority.\n" + }, + "domains": { "type": "array", - "description": "List of IP addresses resolving for this domain.", + "description": "The domains the rule applies to.", "items": { - "type": "string" + "type": "string", + "description": "A domain name." } }, - "cnames": { + "paths": { "type": "array", - "description": "List of CNAME records resolving for this domain.", + "description": "The paths the rule applies to.", "items": { - "type": "string" - } - }, - "flags": { - "type": "object", - "description": "Status flags for the domain.", - "properties": { - "default": { - "type": "boolean", - "description": "Whether this is the default domain." - }, - "active": { - "type": "boolean", - "description": "Whether the domain is active." - }, - "dns_resolves": { - "type": "boolean", - "description": "Whether the domain DNS resolves correctly." - }, - "acquia_hosted": { - "type": "boolean", - "description": "Whether the domain is hosted on Acquia infrastructure." - } - }, - "required": [ - "default", - "active", - "dns_resolves", - "acquia_hosted" - ] - } - }, - "required": [ - "hostname", - "site_id", - "environment_id", - "ip_addresses", - "cnames", - "flags" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "type": "string", + "description": "A path pattern." } }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - }, - "example": { - "hostname": "example.com", - "site_id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", - "environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323", - "ip_addresses": [ - "203.0.113.10" - ], - "cnames": [], - "flags": { - "default": false, - "active": true, - "dns_resolves": true, - "acquia_hosted": true - }, - "_links": { - "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/domains/example.com/status" - } - } - } - } - } - }, - "Environment_Service_API_Database": { - "description": "Database details", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "description": "Database properties", - "properties": { - "database_name": { - "type": "string", - "description": "The name of the database." + "mapped_domains_count": { + "type": "integer", + "description": "The number of domains the rule is mapped to." }, - "database_role": { - "type": "string", - "description": "The role of the database (e.g. the site username)." - } - }, - "required": [ - "database_name", - "database_role" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" + "targets": { + "type": "array", + "description": "Conditions that must match for the rule to fire.", + "items": { + "oneOf": [ + { + "description": "Range match for IP or ASN ranges.", + "type": "object", + "required": [ + "attribute", + "criteria", + "value" + ], + "additionalProperties": false, + "properties": { + "attribute": { + "type": "string", + "description": "The request attribute the rule inspects.", + "enum": [ + "source-ip", + "asn" + ] + }, + "criteria": { + "type": "string", + "description": "How `value` is compared against `attribute`.", + "enum": [ + "range" + ] + }, + "value": { + "type": "object", + "description": "Range bounds for IP or ASN ranges.", + "additionalProperties": false, + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "type": "string", + "description": "The start of the range." + }, + "to": { + "type": "string", + "description": "The end of the range." + } } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + } } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" + { + "description": "Value-list match for non-header, non-query attributes.", + "type": "object", + "required": [ + "attribute", + "criteria", + "value" + ], + "additionalProperties": false, + "properties": { + "attribute": { + "type": "string", + "description": "The request attribute the rule inspects.", + "enum": [ + "source-ip", + "country", + "method", + "path", + "asn" + ] }, - { - "format": "uri-template" + "criteria": { + "type": "string", + "description": "How `value` is compared against `attribute`.", + "enum": [ + "equals", + "contains", + "regex" + ] + }, + "value": { + "type": "object", + "description": "A list of candidate values combined with OR.", + "additionalProperties": false, + "required": [ + "values" + ], + "properties": { + "values": { + "type": "array", + "description": "The list of values.", + "items": { + "type": "string", + "description": "A value." + } + } + } } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + } }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - }, - "example": { - "database_name": "site_dev", - "database_role": "site_dev_user", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database" - } - } - } - } - }, - "links": { - "self": { - "operationId": "findDatabaseBySiteIdAndEnvironmentId", - "parameters": { - "siteId": "$request.path.siteId", - "environmentId": "$request.path.environmentId" - } - } - } - }, - "Environment_Service_API_DatabaseConnection": { - "description": "Database connection credential details", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "description": "Database connection credential properties", - "properties": { - "db_host": { - "type": "string", - "description": "The database host." - }, - "name": { - "type": "string", - "description": "The database name." - }, - "password": { - "type": "string", - "description": "The database password." + "description": "Key-value match for header or query-string attributes.", + "type": "object", + "required": [ + "attribute", + "criteria", + "value" + ], + "additionalProperties": false, + "properties": { + "attribute": { + "type": "string", + "description": "The request attribute the rule inspects.", + "enum": [ + "header", + "query-string" + ] + }, + "criteria": { + "type": "string", + "description": "How `value` is compared against `attribute`.", + "enum": [ + "equals", + "contains", + "regex" + ] + }, + "value": { + "type": "object", + "description": "Key-value matchers for header or query-string attributes.", + "additionalProperties": false, + "required": [ + "key_value_pairs" + ], + "properties": { + "key_value_pairs": { + "type": "array", + "description": "The list of key-value pairs.", + "items": { + "type": "object", + "description": "A key-value pair.", + "required": [ + "key", + "value" + ], + "properties": { + "key": { + "type": "string", + "description": "The header or query-parameter name." + }, + "value": { + "type": "string", + "description": "The expected value." + } + } + } + } + } + } + } + } + ] + } }, - "user_name": { + "created_at": { "type": "string", - "description": "The database username." + "format": "date-time", + "description": "The timestamp when the rule was created." }, - "ssh_host": { + "updated_at": { "type": "string", - "description": "The SSH host for tunneling to the database." + "format": "date-time", + "description": "The timestamp when the rule was last updated." } }, "required": [ - "db_host", - "name", - "password", - "user_name", - "ssh_host" + "id", + "display_name", + "action", + "priority", + "domains", + "paths", + "created_at", + "updated_at", + "targets" ] }, { @@ -134752,230 +166183,426 @@ ] }, "example": { - "db_host": "db.example.com", - "name": "site_dev", - "password": "s3cr3t", - "user_name": "site_dev_user", - "ssh_host": "site.dev.ssh.hosted.acquia-sites.com", + "id": 301, + "display_name": "Block bad bots", + "action": "block", + "priority": 1, + "domains": [ + "example.com" + ], + "paths": [ + "/api/*" + ], + "targets": [ + { + "attribute": "source-ip", + "criteria": "range", + "value": { + "from": "10.0.0.0", + "to": "10.0.0.255" + } + }, + { + "attribute": "header", + "criteria": "equals", + "value": { + "key_value_pairs": [ + { + "key": "User-Agent", + "value": "BadBot/1.0" + } + ] + } + } + ], + "created_at": "2026-05-01T12:00:00Z", + "updated_at": "2026-05-10T09:30:00Z", "_links": { "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/connection" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/301" } } } } + }, + "links": { + "self": { + "operationId": "findCustomRuleBySubscriptionUuidAndCustomRuleId", + "parameters": { + "subscriptionUuid": "$request.path.subscriptionUuid", + "customRuleId": "$request.path.customRuleId" + } + } } }, - "Environment_Service_API_DatabaseBackup": { - "description": "Database backup details", + "CDN_API_CustomRuleCreated": { + "description": "OK", "content": { "application/hal+json": { "schema": { "allOf": [ { - "type": "object", - "description": "Database backup properties", - "properties": { - "id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the database backup." - }, - "database_id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Identifier of the database this backup belongs to." - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "Timestamp when the backup was created." + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] }, - "type": { - "type": "string", - "enum": [ - "DAILY", - "ON_DEMAND" - ], - "description": "The type of backup." + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] } - }, - "required": [ - "id", - "database_id", - "created_at", - "type" ] }, { "type": "object", "properties": { - "_links": { + "message": { + "type": "string", + "const": "The custom security rule has been created.", + "description": "Confirmation message" + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/301" + } + }, + "message": "The custom security rule has been created." + } + } + } + }, + "CDN_API_CustomRuleDeleted": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "_links": { "type": "object", - "description": "HAL link object", + "description": "HAL links for the resource", "properties": { - "href": { - "type": "string", - "anyOf": [ + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, "required": [ - "href" + "self" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] }, - "_embedded": { + { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] } - }, - "required": [ - "_links" ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "The custom security rule has been deleted.", + "description": "Confirmation message" + } + } } ] }, "example": { - "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "database_id": "b2c3d4e5-f6a7-8901-bcde-f01234567891", - "created_at": "2025-04-01T02:00:00.000Z", - "type": "DAILY", "_links": { "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups/a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "download": { - "href": "https://s3.amazonaws.com/acquia-backups/backup-a1b2c3d4.sql.gz?X-Amz-Expires=3600&X-Amz-Signature=abc123" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/301" } - } - } - } - }, - "links": { - "self": { - "operationId": "findDatabaseBackupBySiteIdAndEnvironmentIdAndBackupId", - "parameters": { - "siteId": "$request.path.siteId", - "environmentId": "$request.path.environmentId", - "backupId": "$request.path.backupId" + }, + "message": "The custom security rule has been deleted." } } } }, - "Environment_Service_API_DatabaseBackupCollection": { - "description": "Database backup collection", + "CDN_API_RateLimitingRuleCollection": { + "description": "OK", "content": { "application/hal+json": { "schema": { @@ -135433,420 +167060,12 @@ { "href": "https://api.acquia.com/v3/resources{?offset}", "templated": true - } - ] - }, - "offset": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for offset" - }, - "limit": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for limit" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { - "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" - } - }, - "required": [ - "total", - "limit", - "offset" - ] - } - }, - "required": [ - "count", - "total", - "pagination" - ] - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 - }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - } - ] - }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { + } + ] + }, + "offset": { + "allOf": [ + { "type": "object", "description": "HAL link object", "properties": { @@ -135903,113 +167122,25 @@ "templated": true } ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } + "required": [ + "templated" + ] } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "filter": { + ], + "description": "Templated link for offset" + }, + "limit": { "allOf": [ { "type": "object", @@ -136084,7 +167215,7 @@ ] } ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + "description": "Templated link for limit" } }, "additionalProperties": { @@ -136145,38 +167276,137 @@ } ] } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] } - } + }, + "required": [ + "count", + "total", + "pagination" + ] } ], "examples": [ { "_links": { "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", "templated": true } }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, "_embedded": { "items": [ { - "id": "1", + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", "name": "Resource 1", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/1" + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" } } }, { - "id": "2", + "id": "222e4567-e89b-11d3-a789-426614174000", "name": "Resource 2", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/2" + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" } } } @@ -136186,30 +167416,44 @@ { "_links": { "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", "templated": true } }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, "_embedded": { "items": [ { - "id": "3", - "name": "Resource 3", + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/3" + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" } } }, { - "id": "4", - "name": "Resource 4", + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/4" + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" } } } @@ -136392,7 +167636,7 @@ "_links": { "type": "object", "properties": { - "sort": { + "filter": { "allOf": [ { "type": "object", @@ -136467,7 +167711,7 @@ ] } ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" } }, "additionalProperties": { @@ -136536,10 +167780,10 @@ { "_links": { "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", "templated": true } }, @@ -136565,424 +167809,39 @@ } ] } - } - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "allOf": [ - { - "type": "object", - "description": "Database backup properties", - "properties": { - "id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the database backup." - }, - "database_id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Identifier of the database this backup belongs to." - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "Timestamp when the backup was created." - }, - "type": { - "type": "string", - "enum": [ - "DAILY", - "ON_DEMAND" - ], - "description": "The type of backup." - } - }, - "required": [ - "id", - "database_id", - "created_at", - "type" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups?limit=2{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups?limit=2&offset=0{&filter}", - "templated": true - }, - "sort": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups?limit=2&offset=0{&sort}", - "templated": true - } - }, - "count": 1, - "total": 1, - "pagination": { - "total": 1, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "database_id": "b2c3d4e5-f6a7-8901-bcde-f01234567891", - "created_at": "2025-04-01T02:00:00.000Z", - "type": "DAILY", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/site-instances/3e8ecbec-ea7c-4260-8414-ef2938c859bc.d3f7270e-c45f-4801-9308-5e8afe84a323/database/backups/a1b2c3d4-e5f6-7890-abcd-ef1234567890" - } - } - } - ] - } - } - } - } - }, - "Environment_Service_API_EgressIpCollection": { - "description": "Egress IP collection", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ + }, { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true } }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" } } }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } } ] }, @@ -137160,200 +168019,7 @@ "_links": { "type": "object", "properties": { - "prev": { - "description": "Link to the previous page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "next": { - "description": "Link to the next page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "offset": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for offset" - }, - "limit": { + "sort": { "allOf": [ { "type": "object", @@ -137428,7 +168094,7 @@ ] } ], - "description": "Templated link for limit" + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" } }, "additionalProperties": { @@ -137459,214 +168125,68 @@ "type": "string", "description": "A URL to a resource that provides deprecation information" }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { - "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" - } - }, - "required": [ - "total", - "limit", - "offset" - ] - } - }, - "required": [ - "count", - "total", - "pagination" - ] - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - } + ] } - ] + } } - }, + } + ], + "examples": [ { "_links": { "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", "templated": true } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, "_embedded": { "items": [ { - "id": "111e4567-e89b-11d3-a789-426614174000", + "id": "1", "name": "Resource 1", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + "href": "https://api.acquia.com/v3/resources/1" } } }, { - "id": "222e4567-e89b-11d3-a789-426614174000", + "id": "2", "name": "Resource 2", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 - }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + "href": "https://api.acquia.com/v3/resources/2" } } } @@ -137687,41 +168207,60 @@ "allOf": [ { "type": "object", - "description": "Egress IP properties", "properties": { "id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the egress IP." + "type": "integer", + "minimum": 1, + "description": "The unique identifier of the rate limiting rule." }, - "status": { + "display_name": { "type": "string", - "description": "Current status of the egress IP." + "description": "The display name of the rate limiting rule." }, - "ipv4": { + "action": { "type": "string", - "description": "The IPv4 address." + "enum": [ + "block", + "alert" + ], + "description": "The action applied when the rule matches." }, - "ipv6": { - "type": [ - "string", - "null" + "rate_limit_per_minute": { + "type": "string", + "enum": [ + "lenient", + "moderate", + "strict" ], - "description": "The IPv6 address, if assigned." + "description": "The rate limit category applied to the rule." }, - "flags": { - "type": "object", - "description": "Status flags for the egress IP.", - "additionalProperties": { - "type": "boolean" + "domains": { + "type": "array", + "description": "The domains the rule applies to.", + "items": { + "type": "string", + "description": "A domain name." } + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the rule was created." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the rule was last updated." } }, "required": [ "id", - "status", - "ipv4", - "flags" + "display_name", + "action", + "rate_limit_per_minute", + "domains", + "created_at", + "updated_at" ] }, { @@ -137877,476 +168416,145 @@ } ] }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/eips?limit=25&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/eips?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/eips?limit=25{&offset}", - "templated": true - } - }, - "count": 1, - "total": 1, - "pagination": { - "total": 1, - "limit": 25, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "eip-a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "status": "active", - "ipv4": "203.0.113.10", - "ipv6": null, - "flags": { - "is_primary": true - } - } - ] - } - } - } - } - }, - "Environment_Service_API_TrustedProxies": { - "description": "Trusted proxy configuration details", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "description": "Trusted proxy configuration properties", - "properties": { - "cidrs_ipv4": { - "type": "array", - "description": "List of trusted IPv4 CIDR blocks.", - "items": { - "type": "string" - } + "examples": { + "rate_limiting_rules_response": { + "summary": "Rate limiting rules collection with pagination", + "value": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?limit=2&offset=0" }, - "cidrs_ipv6": { - "type": "array", - "description": "List of trusted IPv6 CIDR blocks.", - "items": { - "type": "string" - } + "limit": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?offset=0{&limit}", + "templated": true }, - "associated_cdns": { - "type": "object", - "description": "Map of CDN configurations associated with this environment, keyed by CDN name.", - "additionalProperties": { - "type": "object", - "properties": { - "label": { - "type": "string", - "description": "Display label for the CDN." - }, - "is_enabled": { - "type": "boolean", - "description": "Whether the CDN is enabled." - } - }, - "required": [ - "label", - "is_enabled" - ] - } + "offset": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?limit=2{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?limit=2&offset=0{&filter}", + "templated": true + }, + "sort": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?limit=2&offset=0{&sort}", + "templated": true + }, + "next": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules?limit=2&offset=2" } }, - "required": [ - "cidrs_ipv4", - "cidrs_ipv6", - "associated_cdns" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "count": 2, + "total": 4, + "pagination": { + "total": 4, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": 501, + "display_name": "Rate Rule 1", + "action": "alert", + "rate_limit_per_minute": "lenient", + "domains": [ + "example.com" + ], + "created_at": "2026-05-01T12:00:00Z", + "updated_at": "2026-05-10T09:30:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/501" + } } }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" + { + "id": 502, + "display_name": "Rate Rule 2", + "action": "block", + "rate_limit_per_minute": "strict", + "domains": [ + "shop.example.com" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "created_at": "2026-05-02T08:15:00Z", + "updated_at": "2026-05-11T13:45:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/502" } - ] + } } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - }, - "example": { - "cidrs_ipv4": [ - "203.0.113.0/24" - ], - "cidrs_ipv6": [], - "associated_cdns": { - "cloudflare": { - "label": "Cloudflare", - "is_enabled": true - } - }, - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/trusted-proxies" + ] + } } } } } - }, - "links": { - "self": { - "operationId": "findTrustedProxiesByEnvironmentId", - "parameters": { - "environmentId": "$request.path.environmentId" - } - } } }, - "Environment_Service_API_PrivateNetwork": { - "description": "Private network details", + "CDN_API_RateLimitingRule": { + "description": "OK", "content": { "application/hal+json": { "schema": { "allOf": [ { "type": "object", - "description": "Private network reference properties", "properties": { "id": { + "type": "integer", + "minimum": 1, + "description": "The unique identifier of the rate limiting rule." + }, + "display_name": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the private network." + "description": "The display name of the rate limiting rule." }, - "label": { - "type": [ - "string", - "null" + "action": { + "type": "string", + "enum": [ + "block", + "alert" ], - "description": "Human-readable label for the private network." - } - }, - "required": [ - "id" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" + "description": "The action applied when the rule matches." + }, + "rate_limit_per_minute": { + "type": "string", + "enum": [ + "lenient", + "moderate", + "strict" ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "description": "The rate limit category applied to the rule." + }, + "domains": { + "type": "array", + "description": "The domains the rule applies to.", + "items": { + "type": "string", + "description": "A domain name." } }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - }, - "example": { - "id": "pn-a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "label": "Production VPC", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/3e8ecbec-ea7c-4260-8414-ef2938c859bc/private-network" - } - } - } - } - }, - "links": { - "self": { - "operationId": "findPrivateNetworkByEnvironmentId", - "parameters": { - "environmentId": "$request.path.environmentId" - } - } - } - }, - "Environment_Service_API_DomainPattern": { - "description": "OK", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "id": { + "created_at": { "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the domain pattern." + "format": "date-time", + "description": "The timestamp when the rule was created." }, - "pattern": { + "updated_at": { "type": "string", - "maxLength": 455, - "pattern": "^(?=.*\\[site-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", - "description": "The domain pattern string, optionally followed by a single path segment (e.g. [site-name].acme.com/app). The [site-name] token is mandatory; [environment-name] is optional at environment level. Domain rules (enforced in service layer): ≤ 200 chars excluding token placeholders, at least 2 components (must contain .), no IP addresses, no forbidden suffixes (acquia-sites.com, hosting.acquia.com), no wildcards, no leading/trailing dot or hyphen, no consecutive dots, no query string or fragment. Path rules: optional, max 255 chars, must match ^/[A-Za-z0-9._-]+$, max 1 segment. DNS label limit: 63 chars after token substitution ([site-name] ≤ 14 chars). One pattern per environment.\n", - "example": "[site-name].acme.com" + "format": "date-time", + "description": "The timestamp when the rule was last updated." } }, "required": [ "id", - "pattern" + "display_name", + "action", + "rate_limit_per_minute", + "domains", + "created_at", + "updated_at" ] }, { @@ -138490,11 +168698,18 @@ ] }, "example": { - "id": "11111111-1111-1111-1111-111111111111", - "pattern": "[site-name].acme.com", + "id": 501, + "display_name": "Rate Rule 1", + "action": "alert", + "rate_limit_per_minute": "lenient", + "domains": [ + "example.com" + ], + "created_at": "2026-05-01T12:00:00Z", + "updated_at": "2026-05-10T09:30:00Z", "_links": { "self": { - "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns/11111111-1111-1111-1111-111111111111" + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/501" } } } @@ -138502,15 +168717,15 @@ }, "links": { "self": { - "operationId": "findDomainPatternByEnvironmentIdAndPatternId", + "operationId": "findRateLimitingRuleBySubscriptionUuidAndRateLimitingRuleId", "parameters": { - "environmentId": "$request.path.environmentId", - "patternId": "$request.path.patternId" + "subscriptionUuid": "$request.path.subscriptionUuid", + "rateLimitingRuleId": "$request.path.rateLimitingRuleId" } } } }, - "Environment_Service_API_DomainPatternCollection": { + "CDN_API_RateLimitingRuleCreated": { "description": "OK", "content": { "application/hal+json": { @@ -138659,206 +168874,58 @@ { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "_embedded" + "message" ] } ] }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "The rate limiting rule has been created.", + "description": "Confirmation message" + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/501" + } + }, + "message": "The rate limiting rule has been created." + } + } + } + }, + "CDN_API_RateLimitingRuleUpdated": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ { "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, { "type": "object", "properties": { "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "prev": { - "description": "Link to the previous page (templated)", + "self": { "type": "object", + "description": "HAL link object", "properties": { "href": { "type": "string", @@ -138913,10 +168980,135 @@ "templated": true } ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - "next": { - "description": "Link to the next page (templated)", + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "The rate limiting rule has been updated.", + "description": "Confirmation message" + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/501" + } + }, + "message": "The rate limiting rule has been updated." + } + } + } + }, + "CDN_API_RateLimitingRuleDeleted": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { "type": "object", + "description": "HAL link object", "properties": { "href": { "type": "string", @@ -138971,162 +169163,11 @@ "templated": true } ] - }, - "offset": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for offset" - }, - "limit": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for limit" } }, + "required": [ + "self" + ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -139186,443 +169227,130 @@ ] } }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { + "_embedded": { "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" - } - }, - "required": [ - "total", - "limit", - "offset" - ] + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "count", - "total", - "pagination" + "_links" ] - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" } }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 - }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } - } - } - ] - } + "required": [ + "message" + ] } ] }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "The rate limiting rule has been deleted.", + "description": "Confirmation message" + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/rate-limiting-rules/501" + } + }, + "message": "The rate limiting rule has been deleted." + } + } + } + }, + "CDN_API_CustomRuleUpdated": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ { "allOf": [ { - "allOf": [ - { + "type": "object", + "properties": { + "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "_links": { + "self": { "type": "object", - "description": "HAL links for the resource", + "description": "HAL link object", "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "sort": { - "allOf": [ + "href" + ], + "examples": [ { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "href": "https://api.acquia.com/v3/resources/1" }, { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" + ] } }, + "required": [ + "self" + ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -139681,305 +169409,50 @@ } ] } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", - "templated": true + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - } - ] - }, - { - "type": "object", - "properties": { - "_embedded": { + "required": [ + "_links" + ] + }, + { "type": "object", "properties": { - "items": { - "type": "array", - "items": { - "allOf": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the domain pattern." - }, - "pattern": { - "type": "string", - "maxLength": 455, - "pattern": "^(?=.*\\[site-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", - "description": "The domain pattern string, optionally followed by a single path segment (e.g. [site-name].acme.com/app). The [site-name] token is mandatory; [environment-name] is optional at environment level. Domain rules (enforced in service layer): ≤ 200 chars excluding token placeholders, at least 2 components (must contain .), no IP addresses, no forbidden suffixes (acquia-sites.com, hosting.acquia.com), no wildcards, no leading/trailing dot or hyphen, no consecutive dots, no query string or fragment. Path rules: optional, max 255 chars, must match ^/[A-Za-z0-9._-]+$, max 1 segment. DNS label limit: 63 chars after token substitution ([site-name] ≤ 14 chars). One pattern per environment.\n", - "example": "[site-name].acme.com" - } - }, - "required": [ - "id", - "pattern" - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - } + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "items" + "message" ] } - }, - "required": [ - "_embedded" ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "The custom security rule has been updated.", + "description": "Confirmation message" + } + } } ] }, - "examples": { - "domain_pattern_collection": { - "summary": "Domain pattern collection", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns" - }, - "limit": { - "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?limit=25{&offset}", - "templated": true - }, - "sort": { - "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?limit=25&offset=0{&sort}", - "templated": true - } - }, - "count": 1, - "total": 1, - "pagination": { - "total": 1, - "limit": 25, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "11111111-1111-1111-1111-111111111111", - "pattern": "[site-name].acme.com", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns/11111111-1111-1111-1111-111111111111" - } - } - } - ] - } + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/subscriptions/12345678-1234-1234-1234-123456789012/config/security/custom-rules/301" } }, - "domain_pattern_collection_empty": { - "summary": "Empty domain pattern collection", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns" - }, - "limit": { - "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?limit=25{&offset}", - "templated": true - }, - "sort": { - "href": "https://api.acquia.com/v3/environments/11111111-1111-1111-1111-111111111111/domain-patterns?limit=25&offset=0{&sort}", - "templated": true - } - }, - "count": 0, - "total": 0, - "pagination": { - "total": 0, - "limit": 25, - "offset": 0 - }, - "_embedded": { - "items": [] - } - } - } + "message": "The custom security rule has been updated." } } } @@ -148847,244 +178320,354 @@ } } }, - "Failover_Service_API_ForbiddenError": { - "description": "Forbidden", + "Source_Platform_API_SourceSite": { + "description": "Source site details", "content": { - "application/json": { + "application/hal+json": { "schema": { "allOf": [ { "type": "object", + "description": "A Source CMS site resource", "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { + "id": { "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." - } - } - } - }, - "Failover_Service_API_InternalServerError": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" + "description": "The unique identifier of the Source site", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "f47ac10b-58cc-4372-a567-0e02b2c3d479" }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { + "label": { "type": "string", - "const": "system" + "description": "The human-readable label of the site. Must contain only lowercase letters, numbers, hyphens, and spaces.", + "minLength": 4, + "maxLength": 21, + "pattern": "^[a-z0-9]([a-z0-9- ]*[a-z0-9])?$", + "example": "my-source-site" }, - "message": { + "subscription_id": { "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - }, - "Failover_Service_API_NotFoundError": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" + "description": "The unique identifier of the subscription this site belongs to", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { + "status": { "type": "string", - "const": "not_found" + "description": "The current provisioning status of the site", + "enum": [ + "provisioning", + "ready", + "failed" + ], + "example": "ready" }, - "message": { + "created_at": { "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." + "format": "date-time", + "description": "ISO 8601 datetime when the site was created", + "example": "2026-08-18T10:30:00Z" } }, "required": [ - "error", - "message" + "id", + "label", + "subscription_id", + "status", + "created_at" ] - } - ] - }, - "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." - } - } - } - }, - "Failover_Service_API_UnauthorizedError": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ + }, { "type": "object", "properties": { - "error": { - "type": "string" + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - "message": { - "type": "string" + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "error", - "message" + "_links" ] }, { "type": "object", "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." + "_links": { + "type": "object", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "parent": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } } - }, - "required": [ - "error", - "message" - ] + } } ] }, "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "Failover_Service_API_InvalidOperationError": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] + "_links": { + "self": { + "href": "https://api.acquia.com/v3/source-sites/f47ac10b-58cc-4372-a567-0e02b2c3d479" }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] + "parent": { + "href": "https://api.acquia.com/v3/source-sites" } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." + }, + "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", + "label": "my-source-site", + "subscription_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "status": "ready", + "created_at": "2026-08-18T10:30:00Z" + } + } + }, + "links": { + "self": { + "operationId": "findSourceSiteBySourceSiteId", + "parameters": { + "sourceSiteId": "$request.path.sourceSiteId" } } } }, - "Failover_Service_API_FailoverGroupCollection": { + "Source_Platform_API_SourceSiteCollection": { "description": "OK", "content": { "application/hal+json": { @@ -149945,389 +179528,6 @@ } ] }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "filter": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" - } - } - }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" - } - } - } - ] - } - } - ] - }, { "type": "object", "properties": { @@ -150340,66 +179540,51 @@ "allOf": [ { "type": "object", + "description": "A Source CMS site resource", "properties": { "id": { "type": "string", - "description": "Unique identifier for the failover group.", - "example": "b2c3d4e5-f6a7-8901-bcde-f12345678901" + "description": "The unique identifier of the Source site", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "f47ac10b-58cc-4372-a567-0e02b2c3d479" }, - "name": { + "label": { "type": "string", - "description": "The name of the failover group.", - "example": "Primary Failover Group" + "description": "The human-readable label of the site. Must contain only lowercase letters, numbers, hyphens, and spaces.", + "minLength": 4, + "maxLength": 21, + "pattern": "^[a-z0-9]([a-z0-9- ]*[a-z0-9])?$", + "example": "my-source-site" + }, + "subscription_id": { + "type": "string", + "description": "The unique identifier of the subscription this site belongs to", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" }, "status": { "type": "string", + "description": "The current provisioning status of the site", "enum": [ - "creating", - "normal", - "failed-over", - "failing-over", - "error", - "deleting", - "deleted" + "provisioning", + "ready", + "failed" ], - "description": "The current status of the failover group.", - "example": "normal" + "example": "ready" }, - "pairs": { - "type": "array", - "description": "The list of failover pairs belonging to this failover group.", - "items": { - "type": "object", - "properties": { - "service_name": { - "type": "string", - "description": "The name of the service for this failover pair.", - "example": "my-application-service" - }, - "primary_id": { - "type": "string", - "description": "The ID of the primary resource in the failover pair.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "failover_id": { - "type": "string", - "description": "The UUID of the failover resource in the failover pair.", - "example": "f1e2d3c4-b5a6-7890-fedc-ba9876543210" - } - }, - "required": [ - "service_name", - "primary_id", - "failover_id" - ] - } + "created_at": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 datetime when the site was created", + "example": "2026-08-18T10:30:00Z" } }, "required": [ "id", - "name", + "label", + "subscription_id", "status", - "pairs" + "created_at" ] }, { @@ -150556,49 +179741,55 @@ ] }, "examples": { - "failover_group_collection": { - "summary": "Failover group collection with pagination", + "source_site_collection": { + "summary": "Source site collection with pagination", "value": { "_links": { "self": { - "href": "https://api.acquia.com/v3/failover-groups?limit=2&offset=0" + "href": "https://api.acquia.com/v3/source-sites?limit=2&offset=0" }, "limit": { - "href": "https://api.acquia.com/v3/failover-groups?offset=0{&limit}", + "href": "https://api.acquia.com/v3/source-sites?offset=0{&limit}", "templated": true }, "offset": { - "href": "https://api.acquia.com/v3/failover-groups?limit=2{&offset}", + "href": "https://api.acquia.com/v3/source-sites?limit=2{&offset}", "templated": true }, - "filter": { - "href": "https://api.acquia.com/v3/failover-groups?limit=2&offset=0{&filter}", - "templated": true + "next": { + "href": "https://api.acquia.com/v3/source-sites?limit=2&offset=2" } }, - "count": 1, - "total": 1, + "count": 2, + "total": 4, "pagination": { - "total": 1, + "total": 4, "limit": 2, "offset": 0 }, "_embedded": { "items": [ { - "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", - "name": "Primary Failover Group", - "status": "normal", - "pairs": [ - { - "service_name": "my-application-service", - "primary_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "failover_id": "f1e2d3c4-b5a6-7890-fedc-ba9876543210" + "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", + "label": "my-source-site", + "subscription_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "status": "ready", + "created_at": "2026-08-18T10:30:00Z", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/source-sites/f47ac10b-58cc-4372-a567-0e02b2c3d479" } - ], + } + }, + { + "id": "b2c3d4e5-f6a7-8901-bcde-f23456789012", + "label": "another-source-site", + "subscription_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "status": "provisioning", + "created_at": "2026-08-18T11:00:00Z", "_links": { "self": { - "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + "href": "https://api.acquia.com/v3/source-sites/b2c3d4e5-f6a7-8901-bcde-f23456789012" } } } @@ -150610,8 +179801,8 @@ } } }, - "Failover_Service_API_FailoverGroup": { - "description": "OK", + "Source_Platform_API_SourceSiteConfig": { + "description": "The active configuration of the site", "content": { "application/hal+json": { "schema": { @@ -150619,65 +179810,14 @@ { "type": "object", "properties": { - "id": { - "type": "string", - "description": "Unique identifier for the failover group.", - "example": "b2c3d4e5-f6a7-8901-bcde-f12345678901" - }, - "name": { - "type": "string", - "description": "The name of the failover group.", - "example": "Primary Failover Group" - }, - "status": { + "configuration": { "type": "string", - "enum": [ - "creating", - "normal", - "failed-over", - "failing-over", - "error", - "deleting", - "deleted" - ], - "description": "The current status of the failover group.", - "example": "normal" - }, - "pairs": { - "type": "array", - "description": "The list of failover pairs belonging to this failover group.", - "items": { - "type": "object", - "properties": { - "service_name": { - "type": "string", - "description": "The name of the service for this failover pair.", - "example": "my-application-service" - }, - "primary_id": { - "type": "string", - "description": "The ID of the primary resource in the failover pair.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "failover_id": { - "type": "string", - "description": "The UUID of the failover resource in the failover pair.", - "example": "f1e2d3c4-b5a6-7890-fedc-ba9876543210" - } - }, - "required": [ - "service_name", - "primary_id", - "failover_id" - ] - } + "description": "The site's configuration as a single YAML document, keyed by config collection,\nthen config name. The default collection is the empty string; other collections\nare named after their language (for example `language.nl`).\n\nNothing bounds how large this is: a site's configuration is as big as it is. The\nwrite caps what it accepts at 1 MiB, so a site whose configuration exceeds that\ncan be read but not written back — a limit of the service, tracked as DXBE-97.\n\nThe document carries the UUID Source CMS holds for the site, in its\n`system.site` object. That UUID marks where the configuration came from, and an\nimport refuses a document whose UUID does not match the target site. It is not\nthe same identifier as `sourceSiteId`.\n", + "example": "'':\n system.site:\n name: 'My site'\n uuid: 7c1f0a94-5d3b-4e18-9a62-0b8d4c5e6f70\n node.type.article:\n name: Article\nlanguage.nl:\n node.type.article:\n name: Artikel\n" } }, "required": [ - "id", - "name", - "status", - "pairs" + "configuration" ] }, { @@ -150821,57 +179961,148 @@ ] }, "example": { - "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", - "name": "Primary Failover Group", - "status": "normal", - "pairs": [ - { - "service_name": "my-application-service", - "primary_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "failover_id": "f1e2d3c4-b5a6-7890-fedc-ba9876543210" - } - ], "_links": { "self": { - "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + "href": "https://api.acquia.com/v3/source-sites/b2c3d4e5-f6a7-8901-bcde-f23456789012/config" } - } + }, + "configuration": "'':\n system.site:\n name: 'My site'\n uuid: 7c1f0a94-5d3b-4e18-9a62-0b8d4c5e6f70\n node.type.article:\n name: Article\nlanguage.nl:\n node.type.article:\n name: Artikel\n" } } }, "links": { "self": { - "operationId": "findFailoverGroupByFailoverGroupId", + "operationId": "findSourceSiteConfigBySourceSiteId", "parameters": { - "failoverGroupId": "$request.path.failoverGroupId" + "sourceSiteId": "$request.path.sourceSiteId" } } } }, - "Failover_Service_API_MultiRegionFailoverStatus": { - "description": "OK", + "Source_Platform_API_SourceSiteConfigImport": { + "description": "The site's latest configuration import", "content": { "application/hal+json": { "schema": { "allOf": [ { "type": "object", + "description": "A configuration import of a Source CMS site. At most one import runs per site at a\ntime, so the one worth reading is the site's latest: the last one started.\n", "properties": { - "is_enabled": { - "type": "boolean", - "description": "Whether multi-region failover is enabled for the environment." + "id": { + "type": "string", + "description": "The unique identifier of this import, for logs and for support to trace it by.\nA caller cannot use it to confirm that the import it is reading is the one it\nstarted, because nothing hands the identifier back when an import is started.\n", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "d81f5c27-3a4b-4e69-8f10-2c7b9e5a1d34" }, - "failover_group_id": { + "source": { "type": "string", - "description": "The identifier of the failover group associated with the environment." + "description": "Where the import read its configuration from — the same value the write that\nstarted it asked for.\n\n- `request` — the document sent in that write.\n- `github` — the site's connected GitHub repository, read by the site itself.\n", + "enum": [ + "request", + "github" + ], + "example": "request" }, - "is_traffic_failed_over": { - "type": "boolean", - "description": "Whether traffic has been failed over to the secondary region." + "status": { + "type": "string", + "description": "Where the import got to.\n\n- `running` — accepted and not finished. It says nothing about the outcome: an import that has only just started can still end as any of the three below.\n- `succeeded` — the configuration was applied.\n- `refused` — nothing was applied, because the configuration was rejected. `violations` says what was wrong.\n- `failed` — the import began and could not finish; the site was returned to the state it held beforehand.\n", + "enum": [ + "running", + "succeeded", + "refused", + "failed" + ], + "example": "refused" + }, + "started_at": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 datetime when the import was accepted", + "example": "2026-09-09T10:30:00Z" + }, + "finished_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "ISO 8601 datetime when the import reached its final status, or null while it is running", + "example": "2026-09-09T10:32:41Z" + }, + "violations": { + "type": "array", + "description": "Why a refused import was refused. Every violation the site found is listed, not\nonly the first, and one configuration object may appear more than once when it\nbroke more than one rule. Absent unless the status is `refused`.\n", + "items": { + "type": "object", + "properties": { + "collection": { + "type": "string", + "description": "Which configuration the rejected object belongs to:\n`language.` for a translation override, absent for the\nsite's own configuration. An object and its translations are separate\nobjects, and each can be rejected on its own.\n", + "example": "language.es" + }, + "config": { + "type": [ + "string", + "null" + ], + "description": "The configuration object that was rejected. Null for the one violation\nthat is about the document as a whole rather than one object: a site\nUUID that does not match the target.\n", + "example": "node.type.article" + }, + "path": { + "type": "string", + "description": "Which property within the rejected object failed, as a dotted path.\nThe empty string when the violation is about the whole object rather\nthan one property within it. Absent only when `config` is null, which\nhas no object to point into.\n", + "example": "name" + }, + "code": { + "type": "string", + "description": "Names the rule that rejected it, so a caller can recognise a kind of\nfailure without reading the message. Each code is stable once it\nappears, but the set is not closed: the site adds one whenever it adds\na validation rule, and it is not enumerated here for that reason. Treat\nan unrecognised code as opaque and fall back to the message.\n", + "example": "config_schema" + }, + "message": { + "type": "string", + "description": "Plain-language reason, naming what would have gone wrong had the import been applied." + } + }, + "required": [ + "config", + "code", + "message" + ] + }, + "example": [ + { + "config": "node.type.article", + "path": "", + "code": "delete_has_content", + "message": "Deleting this node type would delete 42 nodes. Delete the content first." + }, + { + "collection": "language.es", + "config": "node.type.article", + "path": "name", + "code": "config_schema", + "message": "The Spanish translation override sets 'name' to a list, but it expects a string." + }, + { + "config": "user.role.administrator", + "path": "", + "code": "system_role", + "message": "System roles cannot be changed by a configuration sync." + }, + { + "config": null, + "code": "site_uuid_mismatch", + "message": "This configuration was exported from a different site." + } + ] } }, "required": [ - "is_enabled" + "id", + "source", + "status", + "started_at" ] }, { @@ -150993,1330 +180224,304 @@ ], "examples": [ { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - } - ] - }, - "example": { - "is_enabled": true, - "failover_group_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", - "is_traffic_failed_over": false, - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/a1b2c3d4-e5f6-7890-abcd-ef1234567890/multi-region-failover" - } - } - } - } - }, - "links": { - "self": { - "operationId": "findMultiRegionFailoverByEnvironmentId", - "parameters": { - "environmentId": "$request.path.environmentId" - } - } - } - }, - "Failover_Service_API_CreateFailoverGroupResponse": { - "description": "Failover group creation initiated", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] - } - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Failover group creation has been initiated.", - "description": "Confirmation message that the failover group creation has been initiated." - } - } - } - ] - }, - "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" - } - }, - "message": "Failover group creation has been initiated." - } - } - } - }, - "Failover_Service_API_DeleteFailoverGroupResponse": { - "description": "Failover group deletion initiated", - "content": { - "application/hal+json": { - "schema": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] + ] + } }, - { + "_embedded": { "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] + "description": "Embedded resources (optional)", + "additionalProperties": {} } + }, + "required": [ + "_links" ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "const": "Failover group deletion has been initiated.", - "description": "Confirmation message that the failover group deletion has been initiated." - } - } } ] }, "example": { "_links": { "self": { - "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + "href": "https://api.acquia.com/v3/source-sites/b2c3d4e5-f6a7-8901-bcde-f23456789012/config/import" } }, - "message": "Failover group deletion has been initiated." + "id": "d81f5c27-3a4b-4e69-8f10-2c7b9e5a1d34", + "source": "request", + "status": "refused", + "started_at": "2026-09-09T10:30:00Z", + "finished_at": "2026-09-09T10:32:41Z", + "violations": [ + { + "collection": "", + "config": "node.type.article", + "path": "", + "code": "delete_has_content", + "message": "Deleting this node type would delete 42 nodes. Delete the content first." + }, + { + "collection": "language.es", + "config": "node.type.article", + "path": "name", + "code": "config_schema", + "message": "The Spanish translation override sets 'name' to a list, but it expects a string." + } + ] + } + } + }, + "links": { + "self": { + "operationId": "findSourceSiteConfigImportBySourceSiteId", + "parameters": { + "sourceSiteId": "$request.path.sourceSiteId" } } } }, - "Failover_Service_API_FailoverGroupFailoverResponse": { - "description": "Failover group failover initiated", + "Source_Platform_API_ForbiddenError": { + "description": "Forbidden", "content": { - "application/hal+json": { + "application/json": { "schema": { "allOf": [ { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] + "type": "object", + "properties": { + "error": { + "type": "string" }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] + "message": { + "type": "string" } + }, + "required": [ + "error", + "message" ] }, { "type": "object", "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, "message": { "type": "string", - "const": "Failover group failover initiated.", - "description": "Confirmation message that the failover group failover has been initiated." + "example": "You do not have permission to perform this action." } - } + }, + "required": [ + "error", + "message" + ] } ] }, "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" - } - }, - "message": "Failover group failover initiated." + "error": "forbidden", + "message": "You do not have permission to perform this action." } } } }, - "Failover_Service_API_FailoverGroupRevertFailoverResponse": { - "description": "Failover group revert failover initiated", + "Source_Platform_API_InternalServerError": { + "description": "Internal Server Error", "content": { - "application/hal+json": { + "application/json": { "schema": { "allOf": [ { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] + "type": "object", + "properties": { + "error": { + "type": "string" }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] + "message": { + "type": "string" } + }, + "required": [ + "error", + "message" ] }, { "type": "object", "properties": { + "error": { + "type": "string", + "const": "system" + }, "message": { "type": "string", - "const": "Failover group revert failover initiated.", - "description": "Confirmation message that the failover group revert failover has been initiated." + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." } - } + }, + "required": [ + "error", + "message" + ] } ] }, "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" - } - }, - "message": "Failover group revert failover initiated." + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." } } } }, - "Failover_Service_API_FailoverGroupSyncResponse": { - "description": "Failover group sync initiated", + "Source_Platform_API_InvalidOperationError": { + "description": "Conflict", "content": { - "application/hal+json": { + "application/json": { "schema": { "allOf": [ { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] + "type": "object", + "properties": { + "error": { + "type": "string" }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] + "message": { + "type": "string" } + }, + "required": [ + "error", + "message" ] }, { "type": "object", "properties": { + "error": { + "type": "string", + "const": "conflict" + }, "message": { "type": "string", - "const": "Failover group sync initiated.", - "description": "Confirmation message that the failover group sync has been initiated." + "example": "The requested operation is invalid or cannot be completed." } - } + }, + "required": [ + "error", + "message" + ] } ] }, "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" - } - }, - "message": "Failover group sync initiated." + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." } } } }, - "Failover_Service_API_SaveMultiRegionFailoverResponse": { - "description": "Multi-region failover enable initiated", + "Source_Platform_API_NotFoundError": { + "description": "Not Found", "content": { - "application/hal+json": { + "application/json": { "schema": { "allOf": [ { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] + "type": "object", + "properties": { + "error": { + "type": "string" }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] + "message": { + "type": "string" } + }, + "required": [ + "error", + "message" ] }, { "type": "object", "properties": { + "error": { + "type": "string", + "const": "not_found" + }, "message": { "type": "string", - "const": "Multi-region failover enable has been initiated.", - "description": "Confirmation message that multi-region failover enable has been initiated." + "example": "The resource you are trying to access does not exist, or you do not have access to it." } - } + }, + "required": [ + "error", + "message" + ] } ] }, "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/a1b2c3d4-e5f6-7890-abcd-ef1234567890/multi-region-failover" - } - }, - "message": "Multi-region failover enable has been initiated." + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." } } } }, - "Failover_Service_API_DeleteMultiRegionFailoverResponse": { - "description": "Multi-region failover disable initiated", + "Source_Platform_API_UnauthorizedError": { + "description": "Unauthorized", "content": { - "application/hal+json": { + "application/json": { "schema": { "allOf": [ { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] + "type": "object", + "properties": { + "error": { + "type": "string" }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] + "message": { + "type": "string" } + }, + "required": [ + "error", + "message" ] }, { "type": "object", "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, "message": { "type": "string", - "const": "Multi-region failover disable has been initiated.", - "description": "Confirmation message that multi-region failover disable has been initiated." + "const": "You do not have permission to access this resource." } - } + }, + "required": [ + "error", + "message" + ] } ] }, "example": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/environments/a1b2c3d4-e5f6-7890-abcd-ef1234567890/multi-region-failover" - } - }, - "message": "Multi-region failover disable has been initiated." + "error": "unauthorized", + "message": "You do not have permission to access this resource." } } } }, - "Failover_Service_API_ValidationError": { + "Source_Platform_API_ValidationError": { "description": "Validation Error", "content": { "application/json": { @@ -152352,33 +180557,58 @@ } } }, - "New_Relic_Provisioning_API_BadRequestError": { - "description": "Bad Request", + "API_Specs_API_InternalServerError": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "error": { - "type": "string" + "allOf": [ + { + "type": "object", + "required": [ + "error", + "message" + ], + "properties": { + "error": { + "type": "string", + "description": "The error summary." + }, + "message": { + "type": "string", + "description": "The long description for the returned error." + } + } }, - "message": { - "type": "string" + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] } - }, - "required": [ - "error", - "message" ] }, "example": { - "error": "bad_request", - "message": "The request contains invalid or missing required fields." + "error": "system", + "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." } } } }, - "New_Relic_Provisioning_API_ForbiddenError": { + "Failover_Service_API_ForbiddenError": { "description": "Forbidden", "content": { "application/json": { @@ -152425,7 +180655,7 @@ } } }, - "New_Relic_Provisioning_API_InternalServerError": { + "Failover_Service_API_InternalServerError": { "description": "Internal Server Error", "content": { "application/json": { @@ -152474,7 +180704,54 @@ } } }, - "New_Relic_Provisioning_API_UnauthorizedError": { + "Failover_Service_API_NotFoundError": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "not_found", + "message": "The resource you are trying to access does not exist, or you do not have access to it." + } + } + } + }, + "Failover_Service_API_UnauthorizedError": { "description": "Unauthorized", "content": { "application/json": { @@ -152521,7 +180798,54 @@ } } }, - "New_Relic_Provisioning_API_NewRelicAccountCollection": { + "Failover_Service_API_InvalidOperationError": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "example": { + "error": "conflict", + "message": "The requested operation is invalid or cannot be completed." + } + } + } + }, + "Failover_Service_API_FailoverGroupCollection": { "description": "OK", "content": { "application/hal+json": { @@ -153778,41 +182102,65 @@ { "type": "object", "properties": { - "entitlement_id": { - "type": "string", - "description": "Acquia entitlement UUID for this New Relic account." - }, - "subscription_id": { + "id": { "type": "string", - "description": "Acquia subscription UUID associated with this entitlement." + "description": "Unique identifier for the failover group.", + "example": "b2c3d4e5-f6a7-8901-bcde-f12345678901" }, - "nr_account_id": { + "name": { "type": "string", - "description": "New Relic account ID; absent until provisioning completes." + "description": "The name of the failover group.", + "example": "Primary Failover Group" }, "status": { "type": "string", "enum": [ - "provisioning", - "active", - "deprovisioning", - "cancelled", - "transferred-out", - "failed" + "creating", + "normal", + "failed-over", + "failing-over", + "error", + "deleting", + "deleted" ], - "description": "Lifecycle state of the New Relic account: provisioning — creation in progress; active — fully provisioned, NR account and admin invite issued; deprovisioning — cancellation in progress; cancelled — account cancelled, row retained for audit; transferred-out — account transferred out of Acquia parent, not cancelled by this service; failed — a step failed, re-trigger via a new broker event or ops tooling.\n" + "description": "The current status of the failover group.", + "example": "normal" }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "Timestamp when the provisioning record was created." + "pairs": { + "type": "array", + "description": "The list of failover pairs belonging to this failover group.", + "items": { + "type": "object", + "properties": { + "service_name": { + "type": "string", + "description": "The name of the service for this failover pair.", + "example": "my-application-service" + }, + "primary_id": { + "type": "string", + "description": "The ID of the primary resource in the failover pair.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "failover_id": { + "type": "string", + "description": "The UUID of the failover resource in the failover pair.", + "example": "f1e2d3c4-b5a6-7890-fedc-ba9876543210" + } + }, + "required": [ + "service_name", + "primary_id", + "failover_id" + ] + } } }, "required": [ - "entitlement_id", - "subscription_id", + "id", + "name", "status", - "created_at" + "pairs" ] }, { @@ -153968,53 +182316,854 @@ } ] }, + "examples": { + "failover_group_collection": { + "summary": "Failover group collection with pagination", + "value": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/failover-groups?limit=2&offset=0" + }, + "limit": { + "href": "https://api.acquia.com/v3/failover-groups?offset=0{&limit}", + "templated": true + }, + "offset": { + "href": "https://api.acquia.com/v3/failover-groups?limit=2{&offset}", + "templated": true + }, + "filter": { + "href": "https://api.acquia.com/v3/failover-groups?limit=2&offset=0{&filter}", + "templated": true + } + }, + "count": 1, + "total": 1, + "pagination": { + "total": 1, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", + "name": "Primary Failover Group", + "status": "normal", + "pairs": [ + { + "service_name": "my-application-service", + "primary_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "failover_id": "f1e2d3c4-b5a6-7890-fedc-ba9876543210" + } + ], + "_links": { + "self": { + "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + } + } + } + ] + } + } + } + } + } + } + }, + "Failover_Service_API_FailoverGroup": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique identifier for the failover group.", + "example": "b2c3d4e5-f6a7-8901-bcde-f12345678901" + }, + "name": { + "type": "string", + "description": "The name of the failover group.", + "example": "Primary Failover Group" + }, + "status": { + "type": "string", + "enum": [ + "creating", + "normal", + "failed-over", + "failing-over", + "error", + "deleting", + "deleted" + ], + "description": "The current status of the failover group.", + "example": "normal" + }, + "pairs": { + "type": "array", + "description": "The list of failover pairs belonging to this failover group.", + "items": { + "type": "object", + "properties": { + "service_name": { + "type": "string", + "description": "The name of the service for this failover pair.", + "example": "my-application-service" + }, + "primary_id": { + "type": "string", + "description": "The ID of the primary resource in the failover pair.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "failover_id": { + "type": "string", + "description": "The UUID of the failover resource in the failover pair.", + "example": "f1e2d3c4-b5a6-7890-fedc-ba9876543210" + } + }, + "required": [ + "service_name", + "primary_id", + "failover_id" + ] + } + } + }, + "required": [ + "id", + "name", + "status", + "pairs" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, "example": { + "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", + "name": "Primary Failover Group", + "status": "normal", + "pairs": [ + { + "service_name": "my-application-service", + "primary_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "failover_id": "f1e2d3c4-b5a6-7890-fedc-ba9876543210" + } + ], "_links": { "self": { - "href": "https://api.acquia.com/v3/newrelic-accounts?filter=entitlement_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "limit": { - "href": "https://api.acquia.com/v3/newrelic-accounts?filter=entitlement_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890{&limit}", - "templated": true + "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + } + } + } + } + }, + "links": { + "self": { + "operationId": "findFailoverGroupByFailoverGroupId", + "parameters": { + "failoverGroupId": "$request.path.failoverGroupId" + } + } + } + }, + "Failover_Service_API_MultiRegionFailoverStatus": { + "description": "OK", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "is_enabled": { + "type": "boolean", + "description": "Whether multi-region failover is enabled for the environment." + }, + "failover_group_id": { + "type": "string", + "description": "The identifier of the failover group associated with the environment." + }, + "is_traffic_failed_over": { + "type": "boolean", + "description": "Whether traffic has been failed over to the secondary region." + } + }, + "required": [ + "is_enabled" + ] }, - "offset": { - "href": "https://api.acquia.com/v3/newrelic-accounts?filter=entitlement_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890{&offset}", - "templated": true + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "example": { + "is_enabled": true, + "failover_group_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", + "is_traffic_failed_over": false, + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/a1b2c3d4-e5f6-7890-abcd-ef1234567890/multi-region-failover" + } + } + } + } + }, + "links": { + "self": { + "operationId": "findMultiRegionFailoverByEnvironmentId", + "parameters": { + "environmentId": "$request.path.environmentId" + } + } + } + }, + "Failover_Service_API_CreateFailoverGroupResponse": { + "description": "Failover group creation initiated", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] }, - "filter": { - "href": "https://api.acquia.com/v3/newrelic-accounts{?filter}", - "templated": true + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Failover group creation has been initiated.", + "description": "Confirmation message that the failover group creation has been initiated." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" } }, - "count": 1, - "total": 1, - "pagination": { - "total": 1, - "limit": 10, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "entitlement_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "subscription_id": "f9e8d7c6-b5a4-3210-fedc-ba9876543210", - "nr_account_id": "12345678", - "status": "active", - "created_at": "2026-05-26T10:00:00Z", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/newrelic-accounts?filter=entitlement_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890" - } + "message": "Failover group creation has been initiated." + } + } + } + }, + "Failover_Service_API_DeleteFailoverGroupResponse": { + "description": "Failover group deletion initiated", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Failover group deletion has been initiated.", + "description": "Confirmation message that the failover group deletion has been initiated." } } - ] - } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + } + }, + "message": "Failover group deletion has been initiated." } } } }, - "SSH_Key_Service_API_SshKeyCollection": { - "description": "OK", + "Failover_Service_API_FailoverGroupFailoverResponse": { + "description": "Failover group failover initiated", "content": { "application/hal+json": { "schema": { @@ -154075,6 +183224,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -154128,6 +183286,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -154144,237 +183311,58 @@ { "type": "object", "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "message": { + "type": "string", + "description": "The message content" } }, "required": [ - "_embedded" + "message" ] } ] }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Failover group failover initiated.", + "description": "Confirmation message that the failover group failover has been initiated." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + } + }, + "message": "Failover group failover initiated." + } + } + } + }, + "Failover_Service_API_FailoverGroupRevertFailoverResponse": { + "description": "Failover group revert failover initiated", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ { "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, { "type": "object", "properties": { "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "prev": { - "description": "Link to the previous page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - }, - "next": { - "description": "Link to the next page (templated)", + "self": { "type": "object", + "description": "HAL link object", "properties": { "href": { "type": "string", @@ -154419,143 +183407,21 @@ }, "required": [ "href" - ] - }, - "offset": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - }, - { - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } ], - "description": "Templated link for offset" - }, - "limit": { - "allOf": [ + "examples": [ { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] + "href": "https://api.acquia.com/v3/resources/1" }, { - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "Templated link for limit" + ] } }, + "required": [ + "self" + ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -154603,550 +183469,142 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { + "_embedded": { "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" - } - }, - "required": [ - "total", - "limit", - "offset" - ] + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "count", - "total", - "pagination" - ] - } - ] - }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } + "_links" ] }, { "type": "object", "properties": { - "_links": { - "type": "object", - "properties": { - "filter": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - }, - { - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for filtering." - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - } + "message": { + "type": "string", + "description": "The message content" } - } + }, + "required": [ + "message" + ] } ] }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Failover group revert failover initiated.", + "description": "Confirmation message that the failover group revert failover has been initiated." + } + } + } + ] + }, + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" + } + }, + "message": "Failover group revert failover initiated." + } + } + } + }, + "Failover_Service_API_FailoverGroupSyncResponse": { + "description": "Failover group sync initiated", + "content": { + "application/hal+json": { + "schema": { + "allOf": [ { "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, { "type": "object", "properties": { "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "sort": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + { + "format": "uri-template" } - }, - "required": [ - "href" - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" }, { - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "Templated link for sorting." + ] } }, + "required": [ + "self" + ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -155194,750 +183652,467 @@ }, "required": [ "href" - ] - } - } - } - } - ] - }, - { - "type": "object", - "description": "A collection of SSH keys.", - "properties": { - "_embedded": { - "type": "object", - "description": "A collection of SSH keys matching the request parameters.", - "properties": { - "items": { - "type": "array", - "items": { - "allOf": [ + ], + "examples": [ { - "type": "object", - "required": [ - "id", - "label", - "public_key", - "fingerprint", - "created_at", - "user_id" - ], - "description": "Details an SSH key.", - "properties": { - "id": { - "type": "string", - "description": "The unique identifier of the SSH key.", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "label": { - "type": "string", - "description": "The human-readable key label." - }, - "public_key": { - "type": "string", - "description": "The public key.", - "minLength": 64 - }, - "fingerprint": { - "type": "string", - "description": "The public key fingerprint.", - "pattern": "^[A-Za-z0-9:+/=.-]+$" - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "The key creation date." - }, - "user_id": { - "type": "string", - "description": "The unique identifier of the user who owns this SSH key.", - "pattern": "^[a-zA-Z0-9-]+$" - } - } + "href": "https://api.acquia.com/v3/resources/1" }, { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } ] } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "items" + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" ] } - }, - "required": [ - "_embedded" ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "const": "Failover group sync initiated.", + "description": "Confirmation message that the failover group sync has been initiated." + } + } } ] }, - "examples": { - "ssh_keys": { - "summary": "SSH key collection", - "value": { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/ssh-keys?limit=2&offset=0" - }, - "limit": { - "href": "https://api.acquia.com/v3/ssh-keys?offset=0{&limit}", - "templated": true - }, - "offset": { - "href": "https://api.acquia.com/v3/ssh-keys?limit=2{&offset}", - "templated": true - }, - "filter": { - "href": "https://api.acquia.com/v3/ssh-keys?limit=2&offset=0{&filter}", - "templated": true - }, - "sort": { - "href": "https://api.acquia.com/v3/ssh-keys?limit=2&offset=0{&sort}", - "templated": true - }, - "next": { - "href": "https://api.acquia.com/v3/ssh-keys?limit=2&offset=2" - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "1acbb1a5-e864-4b8e-a3f9-b1ed462afd25", - "label": "primary", - "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQChwPHzTTDKDpSbpa2+d22LcbQmsw92eLsUK3Fmei1fiGDkd34NsYCN8m7lsi3NbvdMS83CtPQPWiCveYPzFs1/hHc4PYj8opD2CNnr5iWVVbyaulCYHCgVv4aB/ojcexg8q483A4xJeF15TiCr/gu34rK6ucTvC/tn/rCwJBudczvEwt0klqYwv8Cl/ytaQboSuem5KgSjO3lMrb6CWtfSNhE43ZOw+UBFBqxIninN868vGMkIv9VY34Pwj54rPn/ItQd6Ef4B0KHHaGmzK0vfP+AK7FxNMoHnj3iYT33KZNqtDozdn5tYyH/bThPebEtgqUn+/w5l6wZIC/8zzvls/127ngHk+jNa0PlNyS2TxhPUK4NaPHIEnnrlp07JEYC4ImcBjaYCWAdcTcUkcJjwZQkN4bGmyO9cjICH98SdLD/HxqzTHeaYDbAX/Hu9HfaBb5dXLWsjw3Xc6hoVnUUZbMQyfgb0KgxDLh92eNGxJkpZiL0VDNOWCxDWsNpzwhLNkLqCvI6lyxiLaUzvJAk6dPaRhExmCbU1lDO2eR0FdSwC1TEhJOT9eDIK1r2hztZKs2oa5FNFfB/IFHVWasVFC9N2h/r/egB5zsRxC9MqBLRBq95NBxaRSFng6ML5WZSw41Qi4C/JWVm89rdj2WqScDHYyAdwyyppWU4T5c9Fmw== example@example.com", - "fingerprint": "SHA256:7a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8g9h0i1j2k3l4m5n6o7p8q9r0s1", - "created_at": "2024-10-01T12:30:00Z", - "user_id": "a47ac10b-58cc-4372-a567-0e02b2c3d479", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/ssh-keys/1acbb1a5-e864-4b8e-a3f9-b1ed462afd25" - } - } - }, - { - "id": "2bcbb1a5-e864-4b8e-a3f9-b1ed462afd26", - "label": "backup", - "public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFf2T1I1d8T1B9Q1b8pS6m2xvY3i5q8sNnU5oQwY5vS9 example@example.com", - "fingerprint": "SHA256:9b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d2e1f0a9b8", - "created_at": "2024-10-02T09:15:00Z", - "user_id": "b58bd21c-69dd-5483-b678-1f13c3d4e580", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/ssh-keys/2bcbb1a5-e864-4b8e-a3f9-b1ed462afd26" - } - } - } - ] - } + "example": { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/failover-groups/b2c3d4e5-f6a7-8901-bcde-f12345678901" } - } + }, + "message": "Failover group sync initiated." } } } }, - "SSH_Key_Service_API_SshKey": { - "description": "OK", + "Failover_Service_API_SaveMultiRegionFailoverResponse": { + "description": "Multi-region failover enable initiated", "content": { "application/hal+json": { "schema": { "allOf": [ { - "type": "object", - "required": [ - "id", - "label", - "public_key", - "fingerprint", - "created_at", - "user_id" - ], - "description": "Details an SSH key.", - "properties": { - "id": { - "type": "string", - "description": "The unique identifier of the SSH key.", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "label": { - "type": "string", - "description": "The human-readable key label." - }, - "public_key": { - "type": "string", - "description": "The public key.", - "minLength": 64 - }, - "fingerprint": { - "type": "string", - "description": "The public key fingerprint.", - "pattern": "^[A-Za-z0-9:+/=.-]+$" - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "The key creation date." - }, - "user_id": { - "type": "string", - "description": "The unique identifier of the user who owns this SSH key.", - "pattern": "^[a-zA-Z0-9-]+$" - } - } - }, - { - "type": "object", - "properties": { - "_links": { + "allOf": [ + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "_links": { "type": "object", - "description": "HAL link object", + "description": "HAL links for the resource", "properties": { - "href": { - "type": "string", - "anyOf": [ + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, "required": [ - "href" - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "format": "uri" + "href": "https://api.acquia.com/v3/resources/1" }, { - "format": "uri-template" + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + ] } }, - "required": [ - "href" - ] - } + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] }, - "_embedded": { + { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] } - }, - "required": [ - "_links" ] - } - ] - }, - "example": { - "id": "1acbb1a5-e864-4b8e-a3f9-b1ed462afd25", - "label": "primary", - "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQChwPHzTTDKDpSbpa2+d22LcbQmsw92eLsUK3Fmei1fiGDkd34NsYCN8m7lsi3NbvdMS83CtPQPWiCveYPzFs1/hHc4PYj8opD2CNnr5iWVVbyaulCYHCgVv4aB/ojcexg8q483A4xJeF15TiCr/gu34rK6ucTvC/tn/rCwJBudczvEwt0klqYwv8Cl/ytaQboSuem5KgSjO3lMrb6CWtfSNhE43ZOw+UBFBqxIninN868vGMkIv9VY34Pwj54rPn/ItQd6Ef4B0KHHaGmzK0vfP+AK7FxNMoHnj3iYT33KZNqtDozdn5tYyH/bThPebEtgqUn+/w5l6wZIC/8zzvls/127ngHk+jNa0PlNyS2TxhPUK4NaPHIEnnrlp07JEYC4ImcBjaYCWAdcTcUkcJjwZQkN4bGmyO9cjICH98SdLD/HxqzTHeaYDbAX/Hu9HfaBb5dXLWsjw3Xc6hoVnUUZbMQyfgb0KgxDLh92eNGxJkpZiL0VDNOWCxDWsNpzwhLNkLqCvI6lyxiLaUzvJAk6dPaRhExmCbU1lDO2eR0FdSwC1TEhJOT9eDIK1r2hztZKs2oa5FNFfB/IFHVWasVFC9N2h/r/egB5zsRxC9MqBLRBq95NBxaRSFng6ML5WZSw41Qi4C/JWVm89rdj2WqScDHYyAdwyyppWU4T5c9Fmw== example@example.com", - "fingerprint": "SHA256:7a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8g9h0i1j2k3l4m5n6o7p8q9r0s1", - "created_at": "2024-10-01T12:30:00Z", - "user_id": "a47ac10b-58cc-4372-a567-0e02b2c3d479", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/ssh-keys/1acbb1a5-e864-4b8e-a3f9-b1ed462afd25" - } - } - } - } - }, - "links": { - "self": { - "operationId": "findSshKeyBySshKeyId", - "parameters": { - "sshKeyId": "$request.path.sshKeyId" - } - } - } - }, - "SSH_Key_Service_API_UnauthorizedError": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "required": [ - "error", - "message" - ], - "properties": { - "error": { - "type": "string", - "description": "The error summary." - }, - "message": { - "type": "string", - "description": "The long description for the returned error." - } - } }, { "type": "object", "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "unauthorized", - "message": "You do not have permission to access this resource." - } - } - } - }, - "SSH_Key_Service_API_ForbiddenError": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "required": [ - "error", - "message" - ], - "properties": { - "error": { - "type": "string", - "description": "The error summary." - }, "message": { "type": "string", - "description": "The long description for the returned error." + "const": "Multi-region failover enable has been initiated.", + "description": "Confirmation message that multi-region failover enable has been initiated." } } - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] } ] }, "example": { - "error": "forbidden", - "message": "You do not have permission to perform this action." + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/a1b2c3d4-e5f6-7890-abcd-ef1234567890/multi-region-failover" + } + }, + "message": "Multi-region failover enable has been initiated." } } } }, - "SSH_Key_Service_API_NotFoundError": { - "description": "Not Found", + "Failover_Service_API_DeleteMultiRegionFailoverResponse": { + "description": "Multi-region failover disable initiated", "content": { - "application/json": { + "application/hal+json": { "schema": { "allOf": [ { - "type": "object", - "required": [ - "error", - "message" - ], - "properties": { - "error": { - "type": "string", - "description": "The error summary." + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] }, - "message": { - "type": "string", - "description": "The long description for the returned error." + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] } - } + ] }, { "type": "object", "properties": { - "error": { - "type": "string", - "const": "not_found" - }, "message": { "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." + "const": "Multi-region failover disable has been initiated.", + "description": "Confirmation message that multi-region failover disable has been initiated." } - }, - "required": [ - "error", - "message" - ] + } } ] }, "example": { - "error": "not_found", - "message": "The resource you are trying to access does not exist, or you do not have access to it." + "_links": { + "self": { + "href": "https://api.acquia.com/v3/environments/a1b2c3d4-e5f6-7890-abcd-ef1234567890/multi-region-failover" + } + }, + "message": "Multi-region failover disable has been initiated." } } } }, - "SSH_Key_Service_API_ValidationError": { - "description": "Bad Request - Validation Error", + "Failover_Service_API_ValidationError": { + "description": "Validation Error", "content": { "application/json": { "schema": { "type": "object", - "required": [ - "error", - "message" - ], - "description": "A validation error.", "properties": { "error": { - "type": "string", - "description": "The error summary." + "type": "string" }, "message": { "type": "object", - "description": "The validation error message keyed by its field or group name.", "additionalProperties": { "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." } } - } + }, + "required": [ + "error", + "message" + ] }, "example": { "error": "validation_failed", "message": { - "field_name": "This field is required." + "field_name": "This field is required.", + "another_field": "This field must be a valid format." } } } } }, - "SSH_Key_Service_API_InvalidOperationError": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "required": [ - "error", - "message" - ], - "properties": { - "error": { - "type": "string", - "description": "The error summary." - }, - "message": { - "type": "string", - "description": "The long description for the returned error." - } - } - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "conflict", - "message": "The requested operation is invalid or cannot be completed." - } - } - } - }, - "SSH_Key_Service_API_InternalServerError": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "required": [ - "error", - "message" - ], - "properties": { - "error": { - "type": "string", - "description": "The error summary." - }, - "message": { - "type": "string", - "description": "The long description for the returned error." - } - } - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "example": { - "error": "system", - "message": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - } - } - }, "Federated_Authentication_API_IdentityProvider": { "description": "OK", "content": { @@ -160704,2728 +188879,2775 @@ } } }, - "schemas": { - "API_Specs_API_Error": { - "type": "object", - "required": [ - "error", - "message" - ], - "properties": { - "error": { - "type": "string", - "description": "The error summary." - }, - "message": { - "type": "string", - "description": "The long description for the returned error." + "requestBodies": { + "Environment_Service_API_StartDeploymentRequest": { + "description": "Deployment start request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "run_hooks": { + "type": "boolean", + "description": "Whether to run deployment hooks." + }, + "code_reference": { + "type": "string", + "description": "The code reference (branch or tag) to deploy." + }, + "hooks_argument": { + "type": "string", + "description": "Additional arguments passed to deployment hooks." + } + }, + "required": [ + "run_hooks", + "code_reference" + ], + "additionalProperties": false, + "minProperties": 1 + }, + "examples": { + "start_deployment": { + "summary": "Start a deployment", + "description": "Starts a deployment for the specified environment.", + "value": { + "run_hooks": true, + "code_reference": "release-2025-01-15", + "hooks_argument": "--migrate --clear-cache" + } + } + } } } }, - "API_Specs_API_InternalServerError": { - "allOf": [ - { - "type": "object", - "required": [ - "error", - "message" - ], - "properties": { - "error": { - "type": "string", - "description": "The error summary." + "Environment_Service_API_UpdateCodeDeployRequest": { + "description": "Code deploy concurrency update request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "concurrency": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "Maximum number of concurrent code deploys allowed for the environment." + } }, - "message": { - "type": "string", - "description": "The long description for the returned error." + "required": [ + "concurrency" + ], + "additionalProperties": false, + "minProperties": 1 + }, + "examples": { + "update_concurrency": { + "summary": "Update code deploy concurrency", + "description": "Sets the maximum concurrent code deploys for the environment.", + "value": { + "concurrency": 10 + } } } - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" + } + } + }, + "Environment_Service_API_ReorderSiteInstancesRequest": { + "description": "Site instances reorder request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "site_instance_ids": { + "type": "array", + "description": "List of site instance IDs in the desired priority order.", + "items": { + "type": "string", + "description": "Site instance identifier in the format {siteId}.{environmentId} (dot-separated site and environment UUIDs)." + } + } }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + "required": [ + "site_instance_ids" + ], + "additionalProperties": false, + "minProperties": 1 + }, + "examples": { + "reorder": { + "summary": "Reorder site instances", + "description": "Provides the desired order of site instance IDs for the environment.", + "value": { + "site_instance_ids": [ + "3e8ecbec-ea7c-4260-8414-ef2938c859bc.a0c9dff7-56b6-4c0d-bad0-0e6593f66cd3", + "b1d8e2f8-67c7-5d1e-cbe1-1f7604f77de4.c2e9f3a9-78d8-6e2f-dcf2-2a8715a88ef5", + "d3fa04ba-89e9-4f3a-edf3-3b9826b99fa6.e4ab15cb-90fa-4a4b-fea4-4c0937c00ab7" + ] + } } + } + } + } + }, + "Environment_Service_API_UpdateEnvironmentRequest": { + "description": "Update environment request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "label": { + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Human-readable label for the environment." + }, + "description": { + "type": "string", + "minLength": 1, + "maxLength": 512, + "description": "Description for the environment." + }, + "properties": { + "type": "object", + "description": "PHP and server configuration properties for the environment.", + "properties": { + "version": { + "type": "string", + "description": "PHP version (e.g. \"8.3\")." + }, + "apcu": { + "type": "integer", + "description": "APCu memory limit in MB." + }, + "max_execution_time": { + "type": "integer", + "description": "PHP max execution time in seconds." + }, + "memory_limit": { + "type": "integer", + "description": "PHP memory limit in MB." + }, + "opcache": { + "type": "integer", + "description": "OPcache memory limit in MB." + }, + "interned_strings_buffer": { + "type": "integer", + "description": "OPcache interned strings buffer in MB." + }, + "client_max_body_size": { + "type": "integer", + "description": "Nginx client_max_body_size in MB." + }, + "upload_max_filesize": { + "type": "integer", + "description": "PHP upload_max_filesize in MB." + }, + "max_post_size": { + "type": "integer", + "description": "PHP post_max_size in MB." + }, + "max_input_vars": { + "type": "integer", + "description": "PHP max_input_vars." + }, + "memcached_limit": { + "type": "integer", + "description": "Memcached memory limit in MB." + }, + "operating_system": { + "type": "string", + "description": "Operating system (e.g. \"focal\")." + }, + "sendmail_path": { + "type": "string", + "description": "Sendmail path configuration." + } + } + } + }, + "additionalProperties": false, + "minProperties": 1 }, - "required": [ - "error", - "message" - ] + "examples": { + "update_label": { + "summary": "Update environment label", + "value": { + "label": "Staging", + "description": "Staging environment" + } + }, + "update_properties": { + "summary": "Update PHP properties", + "value": { + "properties": { + "version": "8.3", + "memory_limit": 256 + } + } + } + } } - ] + } }, - "Site_Service_API_Site": { - "type": "object", - "description": "A Site resource", - "properties": { - "id": { - "type": "string", - "description": "The unique identifier of the site", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "12345678-1234-1234-1234-123456789012" - }, - "name": { - "type": "string", - "description": "The machine name of the site. Must start with a lowercase letter and contain only lowercase letters and numbers.", - "minLength": 1, - "maxLength": 14, - "pattern": "^[a-z][a-z0-9]*$", - "example": "mysite" - }, - "label": { - "type": "string", - "description": "The human-readable label of the site", - "minLength": 1, - "maxLength": 50, - "example": "My Site 1" - }, - "description": { - "type": "string", - "description": "A description of the site", - "maxLength": 512, - "example": "A production site for the marketing team." - }, - "codebase_id": { - "type": "string", - "description": "The unique identifier of the codebase this site belongs to", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "550e8400-e29b-41d4-a716-446655441210" - }, - "status": { - "type": "string", - "description": "The current lifecycle status of the site. ready indicates the site is active and operational. marked-for-deletion indicates the site has been scheduled for deletion and can still be recovered.\n", - "enum": [ - "ready", - "marked-for-deletion" - ], - "example": "ready" - }, - "delete_at": { - "type": "string", - "format": "date-time", - "description": "ISO 8601 datetime indicating when the site is scheduled for deletion. Only present when status is marked-for-deletion.", - "example": "2025-06-15T00:00:00Z" + "Environment_Service_API_ClearCachesRequest": { + "description": "Clear caches request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "domains": { + "type": "array", + "description": "List of domain names to clear caches for.", + "minItems": 1, + "items": { + "type": "string", + "description": "A domain name." + } + } + }, + "required": [ + "domains" + ], + "additionalProperties": false + }, + "examples": { + "clear_caches": { + "summary": "Clear caches for specific domains", + "value": { + "domains": [ + "example.com", + "www.example.com" + ] + } + } + } } - }, - "required": [ - "id", - "name", - "label", - "codebase_id", - "status" - ] + } }, - "Site_Service_API_HalLink": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" + "Environment_Service_API_CreateSiteInstanceRequest": { + "description": "Create site instance request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "site_id": { + "type": "string", + "description": "The UUID of the site to associate with this environment." + }, + "source_environment_id": { + "type": "string", + "description": "The UUID of the environment to copy files and database from during creation." + }, + "source_site_id": { + "type": "string", + "description": "The UUID of the source site to copy files from during creation." + }, + "hook_arguments": { + "type": "string", + "description": "Additional arguments to pass to deployment hooks during creation." + } + }, + "required": [ + "site_id" + ], + "additionalProperties": false + }, + "examples": { + "create": { + "summary": "Associate a site with an environment", + "value": { + "site_id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc" + } + } + } + } + } + }, + "Environment_Service_API_CopySiteInstanceFilesRequest": { + "description": "Copy site instance files request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "source_environment_id": { + "type": "string", + "description": "The UUID of the environment to copy files from." + } + }, + "required": [ + "source_environment_id" + ], + "additionalProperties": false + }, + "examples": { + "copy_files": { + "summary": "Copy files from another environment", + "value": { + "source_environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323" + } + } + } + } + } + }, + "Environment_Service_API_CopySiteInstanceDatabaseRequest": { + "description": "Copy site instance database request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "source_environment_id": { + "type": "string", + "description": "The UUID of the environment to copy the database from." + } + }, + "required": [ + "source_environment_id" + ], + "additionalProperties": false + }, + "examples": { + "copy_database": { + "summary": "Copy database from another environment", + "value": { + "source_environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323" + } + } + } + } + } + }, + "Environment_Service_API_AssociatePrivateNetworkRequest": { + "description": "Associate private network request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "private_network_id": { + "type": "string", + "description": "The identifier of the private network to associate with this environment." + } + }, + "required": [ + "private_network_id" + ], + "additionalProperties": false, + "minProperties": 1 + }, + "examples": { + "associate": { + "summary": "Associate a private network", + "value": { + "private_network_id": "pn-a1b2c3d4-e5f6-7890-abcd-ef1234567890" + } + } + } + } + } + }, + "Environment_Service_API_UpdateTrustedProxiesRequest": { + "description": "Update trusted proxies request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "cidrs_ipv4": { + "type": "array", + "description": "List of trusted IPv4 CIDR blocks.", + "items": { + "type": "string", + "description": "An IPv4 CIDR block (e.g. \"203.0.113.0/24\")." + } + }, + "cidrs_ipv6": { + "type": "array", + "description": "List of trusted IPv6 CIDR blocks.", + "items": { + "type": "string", + "description": "An IPv6 CIDR block (e.g. \"2001:db8::/32\")." + } + }, + "associated_cdns": { + "type": "array", + "description": "List of CDN names to associate with this environment.", + "items": { + "type": "string", + "enum": [ + "akamai", + "cloudflare", + "fastly" + ] + } + } + }, + "additionalProperties": false, + "minProperties": 1 + }, + "examples": { + "update": { + "summary": "Update trusted proxy configuration", + "value": { + "cidrs_ipv4": [ + "203.0.113.0/24" + ], + "cidrs_ipv6": [], + "associated_cdns": [ + "cloudflare" + ] + } + } + } + } + } + }, + "Environment_Service_API_CreateDomainPatternRequest": { + "description": "Create domain pattern request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "pattern": { + "type": "string", + "maxLength": 455, + "pattern": "^(?=.*\\[site-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", + "description": "The domain pattern to apply to all associated sites in this environment, optionally followed by a single path segment. The [site-name] token is mandatory; [environment-name] is optional. Domain ≤ 200 chars excluding token placeholders; optional path max 255 chars matching ^/[A-Za-z0-9._-]+$. Additional semantic rules (no IPs, no forbidden suffixes, no wildcards, one pattern per environment) are enforced at the service layer.\n", + "example": "[site-name].acme.com" + } + }, + "required": [ + "pattern" + ], + "additionalProperties": false + }, + "examples": { + "create_domain_pattern": { + "summary": "Create a domain pattern", + "value": { + "pattern": "[site-name].acme.com" + } + } + } + } + } + }, + "Environment_Service_API_UpdateDomainPatternRequest": { + "description": "Update domain pattern request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "pattern": { + "type": "string", + "maxLength": 455, + "pattern": "^(?=.*\\[site-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", + "description": "The updated domain pattern to apply to all associated sites in this environment, optionally followed by a single path segment. The [site-name] token is mandatory. Domain ≤ 200 chars excluding token placeholders; optional path max 255 chars matching ^/[A-Za-z0-9._-]+$. Additional semantic rules (no IPs, no forbidden suffixes, no wildcards, one pattern per environment) are enforced at the service layer.\n" + } + }, + "required": [ + "pattern" + ], + "additionalProperties": false, + "minProperties": 1 + }, + "examples": { + "update_domain_pattern": { + "summary": "Update a domain pattern", + "value": { + "pattern": "[site-name].staging.acme.com" + } + } + } + } + } + }, + "Environment_Service_API_SaveDomainRequest": { + "description": "Domain addition request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "custom", + "launch-group" + ], + "description": "Optional. The type to register the domain under, defaulting to `custom` when omitted. `launch-group` marks the domain as belonging to a launch group rather than to the site instance directly; it is restricted to Acquia staff, and is rejected with `403` for any other caller. The three platform-owned types — `acquia`, `environment-pattern`, `codebase-pattern` — are read-only and rejected with `400` if requested here." + } + }, + "additionalProperties": false + }, + "examples": { + "custom_domain": { + "summary": "Add a domain as a custom domain", + "description": "The default path — `type` may equally be omitted, since `{}` registers the domain as `custom` as well. A request with no body at all is equivalent to `{}`.", + "value": { + "type": "custom" + } }, - { - "format": "uri-template" + "launch_group_domain": { + "summary": "Add a domain marked as belonging to a launch group", + "description": "Used when attaching a domain that belongs to a launch group rather than to the site instance directly. Restricted to Acquia staff.", + "value": { + "type": "launch-group" + } } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + } } - ] + } }, - "Site_Service_API_HalItem": { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } + "SSH_Key_Service_API_SshKeyRequestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "label", + "public_key" + ], + "description": "Describes the request body for an SSH key.", + "properties": { + "label": { + "type": "string", + "description": "The SSH key label." }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "public_key": { + "type": "string", + "description": "The public key." + } + }, + "additionalProperties": false, + "minProperties": 1 }, - "required": [ - "self" - ], - "additionalProperties": { + "example": { + "label": "mykey", + "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQChwPHzTTDKDpSbpa2+d22LcbQmsw92eLsUK3Fmei1fiGDkd34NsYCN8m7lsi3NbvdMS83CtPQPWiCveYPzFs1/hHc4PYj8opD2CNnr5iWVVbyaulCYHCgVv4aB/ojcexg8q483A4xJeF15TiCr/gu34rK6ucTvC/tn/rCwJBudczvEwt0klqYwv8Cl/ytaQboSuem5KgSjO3lMrb6CWtfSNhE43ZOw+UBFBqxIninN868vGMkIv9VY34Pwj54rPn/ItQd6Ef4B0KHHaGmzK0vfP+AK7FxNMoHnj3iYT33KZNqtDozdn5tYyH/bThPebEtgqUn+/w5l6wZIC/8zzvls/127ngHk+jNa0PlNyS2TxhPUK4NaPHIEnnrlp07JEYC4ImcBjaYCWAdcTcUkcJjwZQkN4bGmyO9cjICH98SdLD/HxqzTHeaYDbAX/Hu9HfaBb5dXLWsjw3Xc6hoVnUUZbMQyfgb0KgxDLh92eNGxJkpZiL0VDNOWCxDWsNpzwhLNkLqCvI6lyxiLaUzvJAk6dPaRhExmCbU1lDO2eR0FdSwC1TEhJOT9eDIK1r2hztZKs2oa5FNFfB/IFHVWasVFC9N2h/r/egB5zsRxC9MqBLRBq95NBxaRSFng6ML5WZSw41Qi4C/JWVm89rdj2WqScDHYyAdwyyppWU4T5c9Fmw== example@example.com" + } + } + } + }, + "Site_Service_API_DuplicateSiteRequest": { + "description": "Site duplication request body", + "content": { + "application/json": { + "schema": { "type": "object", - "description": "HAL link object", "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" + "environment_mapping": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+:[a-zA-Z0-9-]+$", + "description": "Environment mapping in the format 'sourceEnvId:targetEnvId'" + }, + "description": "Array of environment mappings. You must provide exactly one environment mapping. Each entry maps a source environment ID to a target environment ID, separated by a colon.\n", + "minItems": 1, + "maxItems": 1, + "example": [ + "0ebce493-9d09-479d-a9a8-138a206fa687:a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" + "site_name": { + "type": "string", + "description": "Machine name for the duplicated site. Must start with a lowercase letter and contain only lowercase letters and numbers. Maximum 14 characters.\n", + "minLength": 1, + "maxLength": 14, + "pattern": "^[a-z][a-z0-9]*$", + "example": "dupsite" }, - "type": { + "site_label": { "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" + "description": "Human-readable label for the duplicated site. Must only contain letters, numbers, and spaces. Maximum 50 characters.\n", + "minLength": 1, + "maxLength": 50, + "example": "Duplicated Site" }, - "deprecation": { + "site_id": { "type": "string", - "description": "A URL to a resource that provides deprecation information" + "format": "uuid", + "description": "An optional explicit UUID for the new duplicated site. A UUID is generated automatically if omitted.", + "example": "f1a2b3c4-d5e6-7890-abcd-ef1234567890" }, + "hook_argument": { + "type": "string", + "description": "Optional hook argument to pass to the duplication process.", + "example": "--verbose" + } + }, + "required": [ + "environment_mapping", + "site_name", + "site_label" + ], + "additionalProperties": false + }, + "examples": { + "duplicate_basic": { + "summary": "Duplicate a site with required fields", + "description": "Duplicates a site with a single environment mapping", + "value": { + "environment_mapping": [ + "0ebce493-9d09-479d-a9a8-138a206fa687:a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ], + "site_name": "dupsite", + "site_label": "Duplicated Site" + } + }, + "duplicate_with_options": { + "summary": "Duplicate a site with all options", + "description": "Duplicates a site specifying a custom site ID and hook argument", + "value": { + "environment_mapping": [ + "0ebce493-9d09-479d-a9a8-138a206fa687:a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ], + "site_name": "duphook", + "site_label": "Dup With Hook", + "site_id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890", + "hook_argument": "my-hook-arg" + } + } + } + } + } + }, + "Site_Service_API_CreateSiteRequest": { + "description": "Site creation request body", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { "name": { "type": "string", - "description": "A secondary key for selecting links" + "description": "The machine name of the site. Must start with a lowercase letter and contain only lowercase letters and numbers.", + "minLength": 1, + "maxLength": 14, + "pattern": "^[a-z][a-z0-9]*$", + "example": "mysite" }, - "profile": { + "label": { "type": "string", - "description": "A URI that hints about the profile of the target resource" + "description": "The human-readable label for the site.", + "minLength": 1, + "maxLength": 50, + "example": "My Site" }, - "title": { + "codebase_id": { "type": "string", - "description": "A human-readable identifier for the link" + "description": "The unique identifier of the codebase to associate with this site.", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "a9b8c7d6-e5f4-3210-abcd-ef9876543210" }, - "hreflang": { + "site_id": { "type": "string", - "description": "The language of the target resource" + "format": "uuid", + "description": "An optional explicit UUID for the new site. A UUID is generated automatically if omitted.", + "example": "0ebce493-9d09-479d-a9a8-138a206fa687" + }, + "description": { + "type": "string", + "description": "An optional description for the site.", + "maxLength": 512, + "example": "A production site for the marketing team." } }, "required": [ - "href" + "name", + "label", + "codebase_id" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "additionalProperties": false + }, + "examples": { + "create_site_full": { + "summary": "Create a new site with all fields", + "value": { + "name": "mysite", + "label": "My Site", + "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", + "site_id": "0ebce493-9d09-479d-a9a8-138a206fa687", + "description": "This is a description of my site." } - ] + }, + "create_site_minimal": { + "summary": "Create a new site with required fields only", + "value": { + "name": "newsitename", + "label": "New Site Label", + "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210" + } + } } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} } - }, - "required": [ - "_links" - ] + } }, - "Site_Service_API_HalCollection": { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } + "Site_Service_API_UpdateSiteRequest": { + "description": "Site update request body", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "label": { + "type": "string", + "description": "The new human-readable label for the site.", + "minLength": 1, + "maxLength": 50, + "example": "My Updated Site" }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "description": { + "type": "string", + "description": "The new description for the site.", + "maxLength": 512, + "example": "Updated description for this site." } }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } + "additionalProperties": false, + "minProperties": 1 }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "examples": { + "update_label": { + "summary": "Update site label", + "value": { + "label": "My Updated Site" + } + }, + "update_description": { + "summary": "Update site description", + "value": { + "description": "Updated description for this site." + } + }, + "update_both": { + "summary": "Update label and description", + "value": { + "label": "My Updated Site", + "description": "Updated description for this site." + } } - }, - "required": [ - "_embedded" - ] + } } - ] + } }, - "Site_Service_API_PaginatedCollection": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } + "Launch_Group_API_CreateLaunchGroupRequest": { + "description": "Create launch group request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the launch group. Alphanumeric only; maximum 52 characters.", + "pattern": "^[a-zA-Z0-9]{1,52}$" }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } + "site_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the site to designate as the initial Published site instance." }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "prev": { - "description": "Link to the previous page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "next": { - "description": "Link to the next page (templated)", + "environment_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the environment the initial Published site instance runs in." + }, + "description": { + "type": [ + "string", + "null" + ], + "maxLength": 512, + "description": "An optional, free-text description of the launch group. Can be changed later via `PUT /launch-groups/{launchGroupId}`. Leading and trailing whitespace (including common non-ASCII whitespace such as non-breaking or ideographic spaces, but not invisible zero-width characters or exotic control characters, which count as real content) is stripped before persisting, and the 512-character maxLength above is measured on the string after that stripping, not on the raw submitted value. A null value, an empty string (\"\"), or a string that normalizes to one, all mean no description." + }, + "additional_members": { + "type": "array", + "description": "Optional additional (non-Published) member site instances to add at creation time.", + "items": { "type": "object", "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { + "site_id": { "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - "offset": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for offset" - }, - "limit": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the member site." }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for limit" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + "environment_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the environment the member site instance runs in." + } }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ + "required": [ + "site_id", + "environment_id" + ], + "additionalProperties": false + } + } + }, + "required": [ + "name", + "site_id", + "environment_id" + ], + "additionalProperties": false + }, + "examples": { + "create": { + "summary": "Create a new launch group", + "description": "Creates a launch group with a single initial Published site instance.", + "value": { + "name": "MyLaunchGroup", + "site_id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "environment_id": "e3f7270e-c45f-4801-9308-5e8afe84a323" + } + }, + "create_with_additional_members": { + "summary": "Create a new launch group with additional members", + "description": "Creates a launch group with an initial Published site instance and two additional standby members.", + "value": { + "name": "MyLaunchGroup", + "site_id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc", + "environment_id": "e3f7270e-c45f-4801-9308-5e8afe84a323", + "description": "Marketing campaign for Q3 launch", + "additional_members": [ { - "href": "https://api.acquia.com/v3/resources/1" + "site_id": "4a8ecbec-ea7c-4260-8414-ef2938c859bc", + "environment_id": "e3f7270e-c45f-4801-9308-5e8afe84a323" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "site_id": "5a8ecbec-ea7c-4260-8414-ef2938c859bc", + "environment_id": "e3f7270e-c45f-4801-9308-5e8afe84a323" } ] } - }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { - "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" - } - }, - "required": [ - "total", - "limit", - "offset" - ] } - }, - "required": [ - "count", - "total", - "pagination" - ] + } } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + } + }, + "Launch_Group_API_UpdateLaunchGroupRequest": { + "description": "Update launch group request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the launch group. Alphanumeric only; maximum 52 characters. Optional: omitting this property leaves the current name unchanged. There is no way to clear the name -- submitting it as null is rejected. Renaming a launch group deliberately does not change its `fqdn` -- the FQDN is generated once, from the name the group had at creation, and is never regenerated, so `name` and `fqdn` may permanently disagree after a rename.", + "pattern": "^[a-zA-Z0-9]{1,52}$" + }, + "description": { + "type": [ + "string", + "null" + ], + "maxLength": 512, + "description": "An optional, free-text description of the launch group. Omitting this property leaves the current description unchanged. An explicit null value, an empty string (\"\"), or a string that normalizes to one, all clear it to no description. Leading and trailing whitespace (including common non-ASCII whitespace such as non-breaking or ideographic spaces, but not invisible zero-width characters or exotic control characters, which count as real content) is stripped before persisting, and the 512-character maxLength above is measured on the string after that stripping, not on the raw submitted value." + } }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + "additionalProperties": false, + "minProperties": 1 + }, + "examples": { + "rename_only": { + "summary": "Rename a launch group", + "description": "Renames the launch group, leaving its description unchanged. The FQDN is unaffected by either field.", + "value": { + "name": "MyRenamedGroup" + } }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + "description_only": { + "summary": "Update only the description", + "description": "Sets a new description, leaving the current name unchanged.", + "value": { + "description": "Marketing campaign for Q3 launch" + } }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "clear_description": { + "summary": "Clear an existing description", + "description": "An explicit null clears the description while renaming the group; submitting description as an empty string or whitespace-only has the same effect.", + "value": { + "name": "MyRenamedGroup", + "description": null + } }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "rename_and_set_description": { + "summary": "Rename and set a description together", + "value": { + "name": "MyRenamedGroup", + "description": "Marketing campaign for Q3 launch" + } } + } + } + } + }, + "Launch_Group_API_PublishLaunchGroupRequest": { + "description": "Publish (switch) request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "site_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the target member site to promote to Published. Must be a current non-Published member of the launch group." + }, + "environment_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the environment the target member site instance runs in." + } + }, + "required": [ + "site_id", + "environment_id" + ], + "additionalProperties": false }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 + "examples": { + "publish": { + "summary": "Promote a member to Published", + "description": "Switches the Published site instance, moving all assigned domains to the target member.", + "value": { + "site_id": "4a8ecbec-ea7c-4260-8414-ef2938c859bc", + "environment_id": "e3f7270e-c45f-4801-9308-5e8afe84a323" + } + } + } + } + } + }, + "Launch_Group_API_SaveLaunchGroupDomainRequest": { + "description": "Assign domain request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "source_site_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the member site instance that currently owns the domain. Provide this (together with `source_environment_id`) to assign a Standby domain — one that already exists on a member site instance. Omit both fields entirely to assign a brand-new domain with no prior site instance association." + }, + "source_environment_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the environment the source member site instance runs in. Required together with `source_site_id`; must be provided if and only if `source_site_id` is provided." + } + }, + "dependentRequired": { + "source_site_id": [ + "source_environment_id" + ], + "source_environment_id": [ + "source_site_id" + ] + }, + "additionalProperties": false }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } - } + "examples": { + "assign_standby": { + "summary": "Assign an existing Standby domain", + "description": "Moves a domain that currently lives on a member site instance onto the launch group. Omit the request body entirely to assign a brand-new domain instead.", + "value": { + "source_site_id": "4a8ecbec-ea7c-4260-8414-ef2938c859bc", + "source_environment_id": "e3f7270e-c45f-4801-9308-5e8afe84a323" + } + } + } + } + } + }, + "CDN_API_ProvisionCdnForDomainRequest": { + "description": "Domain CDN provisioning request body", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "environment_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "The environment identifier that the domain will be associated with for purging purposes." }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } - } + "edge_group": { + "type": "string", + "enum": [ + "production", + "non-production" + ], + "description": "The Edge Plus namespace group to provision the domain into for Cloudflare-backed subscriptions." } - ] + }, + "additionalProperties": false, + "required": [ + "environment_id" + ], + "minProperties": 1 + }, + "example": { + "environment_id": "0c3f0f5f-5727-4838-9459-2d90ee1cf7c1", + "edge_group": "non-production" } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + } + } + }, + "CDN_API_CreatePurgeRequest": { + "description": "Purge request body", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "resource_type": { + "type": "string", + "description": "The type of resource to purge.", + "enum": [ + "tags", + "urls", + "domains", + "everything" + ] + }, + "values": { + "type": "array", + "description": "List of values to purge based on the resource type.\nRequired when `resource_type` is not `everything`.\n", + "items": { + "type": "string" + }, + "minItems": 1 + } }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + "additionalProperties": false, + "required": [ + "resource_type" + ], + "minProperties": 1 + }, + "examples": { + "purge_urls": { + "summary": "Purge specific URLs", + "value": { + "resource_type": "urls", + "values": [ + "https://example.com/page1", + "https://example.com/page2" + ] + } }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "purge_tags": { + "summary": "Purge by cache tags", + "value": { + "resource_type": "tags", + "values": [ + "product-123", + "category-456" + ] + } }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true + "purge_domains": { + "summary": "Purge entire domains", + "value": { + "resource_type": "domains", + "values": [ + "example.com", + "test.example.org" + ] + } + }, + "purge_everything": { + "summary": "Purge everything", + "value": { + "resource_type": "everything" + } } + } + } + } + }, + "CDN_API_UpdateSecurityRuleSetRequest": { + "description": "Security ruleset update request body", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "is_enabled": { + "type": "boolean", + "description": "Indicates whether the security ruleset should be enabled." + } + }, + "additionalProperties": false, + "required": [ + "is_enabled" + ], + "minProperties": 1 }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } + "examples": { + "enable": { + "summary": "Enables a security ruleset", + "value": { + "is_enabled": true + } + } + } + } + } + }, + "CDN_API_CreateIpRuleRequest": { + "description": "IP rule create request body", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "ips": { + "type": "array", + "description": "The IPs or CIDR blocks to include in the rule.", + "items": { + "type": "string", + "description": "An IP address or CIDR block." } }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } + "action": { + "type": "string", + "enum": [ + "block", + "allow" + ], + "description": "The action applied when the rule matches." + }, + "display_name": { + "type": "string", + "description": "The display name of the IP rule." + }, + "description": { + "type": "string", + "description": "The description of the IP rule." } + }, + "additionalProperties": false, + "required": [ + "ips", + "action", + "display_name" ] + }, + "examples": { + "create": { + "summary": "Creates an IP rule", + "value": { + "ips": [ + "192.0.2.10", + "198.51.100.0/24" + ], + "action": "block", + "display_name": "Block office IPs", + "description": "Blocks office IP ranges." + } + } } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + } + } + }, + "CDN_API_UpdateIpRuleRequest": { + "description": "IP rule update request body", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "display_name": { + "type": "string", + "description": "The display name of the IP rule." + }, + "action": { + "type": "string", + "enum": [ + "block", + "allow" + ], + "description": "The action applied when the rule matches." + }, + "description": { + "type": "string", + "description": "The description of the IP rule." + }, + "ips": { + "type": "array", + "description": "The IPs or CIDR blocks associated with the rule.", + "items": { + "type": "string", + "description": "An IP address or CIDR block." + } + } }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 + "additionalProperties": false, + "minProperties": 1 }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } + "examples": { + "update": { + "summary": "Updates an IP rule", + "value": { + "display_name": "Allow support", + "action": "allow", + "ips": [ + "203.0.113.5" + ] + } + } + } + } + } + }, + "CDN_API_CreateCustomRuleRequest": { + "description": "Custom security rule create request body", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "display_name": { + "type": "string", + "description": "The display name of the custom security rule." + }, + "action": { + "type": "string", + "enum": [ + "block", + "allow", + "alert" + ], + "description": "The action applied when the rule matches." + }, + "priority": { + "type": "integer", + "minimum": 1, + "description": "The priority order for the rule." + }, + "domains": { + "type": "array", + "description": "The domains the rule applies to.", + "items": { + "type": "string", + "description": "A domain name." } }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } + "paths": { + "type": "array", + "description": "The paths the rule applies to.", + "items": { + "type": "string", + "description": "A path pattern." } } - ] + }, + "additionalProperties": false, + "required": [ + "display_name", + "action", + "domains", + "paths" + ], + "minProperties": 1 + }, + "examples": { + "create": { + "summary": "Creates a custom security rule", + "value": { + "display_name": "Block bad bots", + "action": "block", + "priority": 1, + "domains": [ + "example.com" + ], + "paths": [ + "/api/*" + ] + } + } } } - ] + } }, - "Site_Service_API_FilteredCollection": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "CDN_API_CreateRateLimitingRuleRequest": { + "description": "Rate limiting rule create request body", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "display_name": { + "type": "string", + "description": "The display name of the rate limiting rule." + }, + "action": { + "type": "string", + "enum": [ + "block", + "alert" + ], + "description": "The action applied when the rule matches." + }, + "domains": { + "type": "array", + "description": "The domains the rule applies to.", + "items": { + "type": "string", + "description": "A domain name." } }, - "required": [ - "_links" - ] + "rate_limit_per_minute": { + "type": "string", + "enum": [ + "lenient", + "moderate", + "strict" + ], + "description": "The rate limit category applied to the rule." + } }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] + "additionalProperties": false, + "required": [ + "display_name", + "action", + "rate_limit_per_minute" + ], + "minProperties": 1 + }, + "examples": { + "create": { + "summary": "Creates a rate limiting rule", + "value": { + "display_name": "Rate Rule 1", + "action": "alert", + "rate_limit_per_minute": "lenient", + "domains": [ + "example.com" + ] + } + } + } + } + } + }, + "CDN_API_UpdateRateLimitingRuleRequest": { + "description": "Rate limiting rule update request body", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "display_name": { + "type": "string", + "description": "The display name of the rate limiting rule." + }, + "action": { + "type": "string", + "enum": [ + "block", + "alert" + ], + "description": "The action applied when the rule matches." + }, + "domains": { + "type": "array", + "description": "The domains the rule applies to.", + "items": { + "type": "string", + "description": "A domain name." } }, - "required": [ - "_embedded" - ] + "rate_limit_per_minute": { + "type": "string", + "enum": [ + "lenient", + "moderate", + "strict" + ], + "description": "The rate limit category applied to the rule." + } + }, + "additionalProperties": false, + "minProperties": 1 + }, + "examples": { + "update": { + "summary": "Updates a rate limiting rule", + "value": { + "display_name": "Rate Rule 2", + "action": "block", + "rate_limit_per_minute": "strict", + "domains": [ + "shop.example.com" + ] + } } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "filter": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" - } + } + } + } + }, + "CDN_API_UpdateCustomRuleRequest": { + "description": "Custom security rule update request body", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "display_name": { + "type": "string", + "description": "The display name of the custom security rule." }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" + "action": { + "type": "string", + "enum": [ + "block", + "allow", + "alert" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } + "description": "The action applied when the rule matches." + }, + "priority": { + "type": "integer", + "minimum": 1, + "description": "The priority order for the rule." + }, + "domains": { + "type": "array", + "description": "The domains the rule applies to.", + "items": { + "type": "string", + "description": "A domain name." + } + }, + "paths": { + "type": "array", + "description": "The paths the rule applies to.", + "items": { + "type": "string", + "description": "A path pattern." + } + } + }, + "additionalProperties": false, + "minProperties": 1 + }, + "examples": { + "update": { + "summary": "Updates a custom security rule", + "value": { + "display_name": "Alert login scans", + "action": "alert", + "priority": 2, + "domains": [ + "shop.example.com" + ], + "paths": [ + "/login" ] } } } } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + } + }, + "Tag_API_SaveTagRequest": { + "description": "Tag create/update request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "color": { + "type": "string", + "pattern": "^#((?:[a-f0-9]{3}){1,2})$", + "description": "A color for the specified tag" + } }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } + "additionalProperties": false, + "minProperties": 1 }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } + "examples": { + "save": { + "summary": "Saves a tag", + "description": "Saves a tag with specified color", + "value": { + "color": "#000000" } - ] + } } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + } + } + }, + "Codebase_Service_API_CreateCodebaseRequest": { + "description": "Codebase creation request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "codebase_id": { + "type": "string", + "format": "uuid", + "description": "Client-supplied UUID for the new codebase" + }, + "label": { + "type": "string", + "description": "Human-readable label for the codebase" + }, + "region": { + "type": "string", + "description": "AWS region where the codebase will be created" + } }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true + "required": [ + "codebase_id", + "label", + "region" + ], + "additionalProperties": false + }, + "examples": { + "create": { + "summary": "Create a codebase", + "description": "Creates a new codebase for a subscription", + "value": { + "codebase_id": "a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4", + "label": "my-codebase", + "region": "us-east-1" + } } + } + } + } + }, + "Codebase_Service_API_CreateDomainPatternRequest": { + "description": "Create domain pattern request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "pattern": { + "type": "string", + "maxLength": 455, + "pattern": "^(?=.*\\[site-name\\])(?=.*\\[environment-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", + "description": "The domain pattern to apply to all associated sites in this codebase, optionally followed by a single path segment. Both [site-name] and [environment-name] tokens are mandatory. Domain ≤ 200 chars excluding token placeholders; optional path max 255 chars matching ^/[A-Za-z0-9._-]+$. Additional semantic rules (no IPs, no forbidden suffixes, no wildcards, one pattern per codebase) are enforced at the service layer.\n" + } + }, + "required": [ + "pattern" + ], + "additionalProperties": false }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" - } - } - }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" - } - } + "examples": { + "create_domain_pattern": { + "summary": "Create a domain pattern", + "value": { + "pattern": "[site-name].[environment-name].acme.com" } - ] + } } } - ] + } }, - "Site_Service_API_SortedCollection": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } + "Codebase_Service_API_UpdateCodebaseRequest": { + "description": "Codebase update request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "label": { + "type": "string", + "description": "Human-readable label for the codebase" }, - "required": [ - "_links" - ] + "description": { + "type": "string", + "description": "Description of the codebase" + } }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] + "minProperties": 1, + "additionalProperties": false + }, + "examples": { + "update": { + "summary": "Update a codebase", + "description": "Updates an existing codebase's label and description", + "value": { + "label": "updated-codebase-label", + "description": "Updated codebase description" + } } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "sort": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" - } + } + } + } + }, + "Codebase_Service_API_UpdateDomainPatternRequest": { + "description": "Update domain pattern request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "pattern": { + "type": "string", + "maxLength": 455, + "pattern": "^(?=.*\\[site-name\\])(?=.*\\[environment-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", + "description": "The updated domain pattern to apply to all associated sites in this codebase, optionally followed by a single path segment. Both [site-name] and [environment-name] tokens are mandatory. Domain ≤ 200 chars excluding token placeholders; optional path max 255 chars matching ^/[A-Za-z0-9._-]+$. Additional semantic rules (no IPs, no forbidden suffixes, no wildcards, one pattern per codebase) are enforced at the service layer.\n" + } + }, + "required": [ + "pattern" + ], + "additionalProperties": false, + "minProperties": 1 + }, + "examples": { + "update_domain_pattern": { + "summary": "Update a domain pattern", + "value": { + "pattern": "[site-name].[environment-name].acme.com" + } + } + } + } + } + }, + "Source_Platform_API_CloneSiteRequest": { + "description": "Request body for cloning a Source site", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "subscription_id": { + "type": "string", + "format": "uuid", + "description": "The UUID of the target subscription where the cloned site will be created. Must be a subscription the authenticated user has access to.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" }, - "additionalProperties": { + "label": { + "type": "string", + "description": "The human-readable label for the cloned site. Must start with a lowercase letter or number and can contain lowercase letters, numbers, hyphens, and spaces.", + "minLength": 4, + "maxLength": 21, + "pattern": "^[a-z0-9]([a-z0-9- ]*[a-z0-9])?$", + "example": "my-cloned-site" + } + }, + "required": [ + "subscription_id", + "label" + ], + "additionalProperties": false + }, + "examples": { + "clone_site": { + "summary": "Clone a site to a subscription", + "description": "Creates a clone of the source site in the specified subscription with the given label.", + "value": { + "subscription_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "label": "marketing-site-clone" + } + } + } + } + } + }, + "Source_Platform_API_SaveSourceSiteConfigRequest": { + "description": "Request body for replacing a Source site's configuration.\n\nEvery request names its `source` — where the replacement configuration is to be read\nfrom. The two sources take different bodies, so each is spelled out in full below.\n", + "required": true, + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "title": "From the request", + "description": "The configuration is the document in this request.", "type": "object", - "description": "HAL link object", "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { + "source": { "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + "const": "request", + "description": "Read the configuration from this request's `configuration` property." }, - "hreflang": { + "configuration": { "type": "string", - "description": "The language of the target resource" + "minLength": 1, + "maxLength": 1048576, + "description": "The configuration to apply, as a single YAML document, keyed by\nconfig collection, then config name. The default collection is the\nempty string; other collections are named after their language (for\nexample `language.nl`).\n\nThe document must carry the UUID Source CMS holds for the site it\nwas exported from, in its `system.site` object. That UUID is checked\nagainst the target site before anything else, and the import is\nrefused if it does not match or is absent. It is not the same\nidentifier as `sourceSiteId`.\n" } }, "required": [ - "href" + "source", + "configuration" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" - }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } + "additionalProperties": false }, { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" + "title": "From GitHub", + "description": "The site reads the configuration from its own connected GitHub repository.\nNothing is sent, so there is no `configuration` property to send — including\none is refused with a 400 rather than silently ignored.\n", + "type": "object", + "properties": { + "source": { + "type": "string", + "const": "github", + "description": "Have the site read the configuration from its connected GitHub repository." } - } + }, + "required": [ + "source" + ], + "additionalProperties": false } ] + }, + "examples": { + "from_request": { + "summary": "Replace the site's configuration with a document", + "description": "Applies the configuration a prior read of this path returned, with the article type's label changed.", + "value": { + "source": "request", + "configuration": "'':\n system.site:\n name: 'My site'\n uuid: 7c1f0a94-5d3b-4e18-9a62-0b8d4c5e6f70\n node.type.article:\n name: 'News article'\nlanguage.nl:\n node.type.article:\n name: Nieuwsartikel\n" + } + }, + "from_github": { + "summary": "Replace the site's configuration from GitHub", + "description": "The site reads the configuration itself. The whole body is the one property.", + "value": { + "source": "github" + } + } } } - ] + } }, - "Site_Service_API_ValidationError": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" + "Failover_Service_API_CreateFailoverGroupRequest": { + "description": "Create failover group request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the failover group.", + "example": "Primary Failover Group" + } + }, + "required": [ + "name" + ], + "additionalProperties": false }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." + "examples": { + "create": { + "summary": "Creates a new failover group", + "description": "Creates a new failover group with the specified name", + "value": { + "name": "Primary Failover Group" + } + } } } - }, - "required": [ - "error", - "message" - ] - }, - "Site_Service_API_Error": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] + } }, - "Site_Service_API_UnauthorizedError": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" + "Failover_Service_API_SaveMultiRegionFailoverRequest": { + "description": "Multi-region failover enable request body", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "region": { + "type": "string", + "description": "The region to enable multi-region failover for.", + "example": "us-east-1" + } }, - "message": { - "type": "string" - } + "required": [ + "region" + ], + "additionalProperties": false, + "minProperties": 1 }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." + "examples": { + "enable": { + "summary": "Enables multi-region failover for a region", + "description": "Enables multi-region failover for the specified region", + "value": { + "region": "us-east-1" + } } - }, - "required": [ - "error", - "message" - ] + } } - ] + } }, - "Site_Service_API_ForbiddenError": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" + "Federated_Authentication_API_CreateSsoDomain": { + "description": "Request body for creating a new domain.", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z]{2,})+$", + "description": "The domain name to create (e.g., \"acme.com\")." + } }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } + "required": [ + "domain" + ], + "additionalProperties": false }, - "required": [ - "error", - "message" - ] + "example": { + "domain": "acme.com" + } } - ] + } }, - "Site_Service_API_InternalServerError": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" + "Federated_Authentication_API_CreateIdentityProvider": { + "description": "Request body for creating a new Identity Provider.", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "idp_entity_id": { + "type": "string", + "format": "uri", + "description": "The Identity Provider Entity ID." + }, + "label": { + "type": "string", + "description": "The name of the Identity Provider." + }, + "sso_url": { + "type": "string", + "format": "uri", + "description": "The SSO URL for this IdP." + }, + "certificate": { + "type": "string", + "description": "The certificate for this IdP." + } }, - "message": { - "type": "string" - } + "required": [ + "label", + "idp_entity_id", + "sso_url", + "certificate" + ], + "additionalProperties": false }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" + "example": { + "label": "Acme Corporation Azure AD", + "idp_entity_id": "https://idp.acme.com/saml", + "sso_url": "https://acme.com/sso", + "certificate": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----" + } + } + } + }, + "Federated_Authentication_API_UpdateIdentityProvider": { + "description": "Request body for updating an existing Identity Provider.", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "label": { + "type": "string", + "description": "The name of the Identity Provider." + }, + "certificate": { + "type": "string", + "description": "The X.509 certificate used for SAML authentication." + }, + "sso_url": { + "type": "string", + "format": "uri", + "description": "The Single Sign-On URL for the Identity Provider." + }, + "idp_entity_id": { + "type": "string", + "format": "uri", + "description": "The Identity Provider Entity ID." + } }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } + "additionalProperties": false, + "minProperties": 1 }, - "required": [ - "error", - "message" - ] + "example": { + "label": "Updated Acme Corporation Azure AD", + "certificate": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----", + "sso_url": "https://updatedacme.com/sso", + "idp_entity_id": "https://idp2.acme.com/saml" + } } - ] + } }, - "Site_Service_API_Message": { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] + "Federated_Authentication_API_CreateSsoPolicy": { + "description": "Request body for creating an SSO policy for an Identity Provider.", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "domain_ids": { + "type": "array", + "description": "List of verified domain IDs to enforce this Identity Provider for.", + "items": { + "type": "string", + "description": "Reference to a verified SSO domain." + } + } + }, + "required": [ + "domain_ids" + ], + "additionalProperties": false + }, + "example": { + "domain_ids": [ + "dom-456", + "dom-789" + ] + } + } + } + }, + "Federated_Authentication_API_UpdateSsoPolicy": { + "description": "Request body for updating an SSO policy for an Identity Provider.", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "domain_ids": { + "type": "array", + "description": "List of verified domain IDs to enforce this Identity Provider for.", + "items": { + "type": "string", + "description": "Reference to a verified SSO domain." } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] } }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } + "required": [ + "domain_ids" + ], + "additionalProperties": false, + "minProperties": 1 }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } + "example": { + "domain_ids": [ + "dom-456" + ] + } + } + } + }, + "Federated_Authentication_API_UpdateSsoPolicyRequest": { + "description": "Request body for updating an SSO policy for an Identity Provider.", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "domain_ids": { + "type": "array", + "description": "List of verified domain IDs to enforce this Identity Provider for.", + "items": { + "type": "string", + "description": "Reference to a verified SSO domain." + } + } + }, + "required": [ + "domain_ids" + ], + "additionalProperties": false, + "minProperties": 1 }, - "required": [ - "message" - ] + "example": { + "domain_ids": [ + "dom-456" + ] + } } - ] + } }, - "Site_Service_API_NotFoundError": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" + "Federated_Authentication_API_CreateSsoPolicyRequest": { + "description": "Request body for creating an SSO policy for an Identity Provider.", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "domain_ids": { + "type": "array", + "description": "List of verified domain IDs to enforce this Identity Provider for.", + "items": { + "type": "string", + "description": "Reference to a verified SSO domain." + } + } }, - "message": { - "type": "string" - } + "required": [ + "domain_ids" + ], + "additionalProperties": false }, - "required": [ - "error", - "message" + "example": { + "domain_ids": [ + "dom-456", + "dom-789" + ] + } + } + } + } + }, + "schemas": { + "Environment_Service_API_SiteInstance": { + "type": "object", + "description": "Site Instance properties", + "properties": { + "site_id": { + "type": "string", + "description": "The unique identifier of the site", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "environment_id": { + "type": "string", + "description": "The unique identifier of the environment", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "status": { + "type": "string", + "description": "The current status of the site instance", + "enum": [ + "active", + "creating", + "create-failed", + "updating", + "update-failed", + "deleting", + "deleted", + "delete-failed" ] }, - { + "health_status": { "type": "object", + "description": "Health status information for the site instance", "properties": { - "error": { + "code": { "type": "string", - "const": "not_found" + "description": "Health status code" }, - "message": { + "summary": { "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." + "description": "Summary of the health status" + }, + "details": { + "type": "string", + "description": "Detailed health status information" } }, "required": [ - "error", - "message" + "code", + "summary", + "details" ] - } - ] - }, - "Site_Service_API_InvalidOperationError": { - "allOf": [ - { - "type": "object", + }, + "domains": { + "type": "array", + "description": "List of domains associated with the site instance. Each entry carries the same values as the corresponding domain read.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The domain name." + }, + "is_managed": { + "type": "boolean", + "description": "Whether the domain is managed by Acquia. Carries the same value as the `is_managed` property of the domain reads, including when `type` is absent." + }, + "type": { + "type": "string", + "description": "The type of the domain. Carries the same value space as the `type` property of the domain reads. Absent when the platform holds no recorded type for the domain, or reports one this API does not recognise.", + "enum": [ + "custom", + "environment-pattern", + "codebase-pattern", + "acquia", + "launch-group" + ], + "example": "custom" + } + }, + "required": [ + "name", + "is_managed" + ] + } + }, + "deployment_order": { + "type": [ + "integer", + "null" + ], + "description": "The order in which this site instance is deployed relative to others.", + "example": 1 + }, + "delete_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "The scheduled deletion date-time for this site instance, if set." + }, + "date_marked_for_deletion": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "The date-time when this site instance was marked for deletion." + }, + "deployed_vcs_ref": { + "type": "string", + "description": "The VCS reference (e.g. branch or tag) that is currently deployed on this site instance.", + "example": "MT1.0.10" + }, + "code_hash": { + "type": "string", + "description": "The commit hash of the code currently deployed on this site instance.", + "example": "f70f0eaffa3bdde6622d2a3aca1a5eb2034dd899" + }, + "protection_mode": { + "type": [ + "object", + "null" + ], + "description": "The current protection mode of the site instance", "properties": { - "error": { - "type": "string" + "is_enabled": { + "type": "boolean", + "description": "Indicates whether the protection mode is enabled for the site instance" }, - "message": { - "type": "string" + "is_inherited": { + "type": "boolean", + "description": "Indicates whether the protection mode is inherited from the environment" } }, "required": [ - "error", - "message" + "is_enabled", + "is_inherited" + ] + } + }, + "required": [ + "site_id", + "environment_id", + "status", + "health_status", + "domains" + ] + }, + "Environment_Service_API_Environment": { + "type": "object", + "description": "Environment properties", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the environment", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "name": { + "type": "string", + "description": "The machine name of the environment" + }, + "label": { + "type": "string", + "description": "The human-readable label of the environment" + }, + "description": { + "type": "string", + "description": "A description of the environment" + }, + "status": { + "type": "string", + "description": "The current status of the environment", + "enum": [ + "normal", + "allocated", + "launching", + "killed", + "cancelled", + "stopped" ] }, - { + "flags": { + "type": "object", + "description": "Environment configuration flags", + "additionalProperties": { + "type": "boolean" + } + }, + "properties": { "type": "object", + "description": "Environment PHP and server properties", "properties": { - "error": { + "version": { "type": "string", - "const": "conflict" + "description": "PHP version" }, - "message": { + "max_execution_time": { + "type": "integer", + "description": "Maximum execution time in seconds" + }, + "memory_limit": { + "type": "integer", + "description": "Memory limit in MB" + }, + "apcu": { + "type": "integer", + "description": "APCu cache size in MB" + }, + "client_max_body_size": { + "type": "integer", + "description": "Maximum client body size in MB" + }, + "max_input_vars": { + "type": "integer", + "description": "Maximum number of input variables" + }, + "max_post_size": { + "type": "integer", + "description": "Maximum POST size in MB" + }, + "memcached_limit": { + "type": "integer", + "description": "Memcached limit in MB" + }, + "upload_max_filesize": { + "type": "integer", + "description": "Maximum upload file size in MB" + }, + "operating_system": { "type": "string", - "example": "The requested operation is invalid or cannot be completed." + "description": "Operating system codename" } - }, - "required": [ - "error", - "message" + } + }, + "reference": { + "type": "string", + "description": "The code reference (branch, tag, or commit) deployed to this environment" + }, + "code_switch_status": { + "type": "string", + "description": "The status of the Switch Code action", + "enum": [ + "IDLE", + "IN_PROGRESS" ] + }, + "ssh_url": { + "type": "string", + "format": "uri", + "description": "The SSH connection string for accessing this environment" + }, + "region": { + "type": "string", + "description": "The cloud region where this environment is hosted" + }, + "domain_name": { + "type": "string", + "description": "The default domain for this environment" } + }, + "required": [ + "id", + "name", + "label", + "status", + "flags", + "properties", + "reference", + "code_switch_status", + "ssh_url", + "domain_name" ] }, - "CDN_API_Domain": { + "Environment_Service_API_EmbeddedCodebase": { "type": "object", - "description": "CDN domain resource.", + "description": "Embedded codebase resource", "properties": { - "domain": { + "id": { "type": "string", - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]?(\\.[a-zA-Z]{2,})+$", - "description": "The fully qualified domain name." - }, - "subscription_uuid": { + "description": "The unique identifier of the codebase" + } + }, + "required": [ + "id" + ] + }, + "Environment_Service_API_Deployment": { + "type": "object", + "description": "Deployment properties", + "properties": { + "id": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$", - "description": "The unique identifier of the subscription the domain belongs to." + "description": "Unique identifier for the deployment." }, "environment_id": { "type": "string", "pattern": "^[a-zA-Z0-9-]+$", - "description": "The environment identifier associated with the domain." - }, - "application_name": { - "type": "string", - "description": "The name of the application associated with the domain." + "description": "Identifier of the environment this deployment belongs to." }, "status": { "type": "string", - "description": "The current status of the domain.", + "description": "Current status of the deployment.", "enum": [ - "connecting-to-edge", - "domain-validation-pending", - "ready-for-dns-repointing", - "configuration-failed", - "configured" + "waiting", + "received", + "started", + "done", + "failed", + "error", + "killed" ] }, - "ownership_validation_cname": { + "code_reference": { "type": "string", - "description": "The CNAME record that must be created on the domain's DNS to validate ownership." + "description": "The code reference (e.g. branch or tag) deployed." }, - "bandwidth_usage_tb": { - "type": "number", - "format": "float", - "description": "The bandwidth usage for the domain in terabytes." + "run_hooks": { + "type": "boolean", + "description": "Whether deployment hooks were run." + }, + "hooks_argument": { + "type": [ + "string", + "null" + ], + "description": "Additional arguments passed to deployment hooks." }, "created_at": { "type": "string", "format": "date-time", - "description": "The timestamp when the domain was created." + "description": "Timestamp when the deployment was created." }, - "updated_at": { - "type": "string", + "started_at": { + "type": [ + "string", + "null" + ], "format": "date-time", - "description": "The timestamp when the domain was last updated." + "description": "Timestamp when the deployment started." + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "Timestamp when the deployment completed." + }, + "sender_id": { + "type": [ + "string", + "null" + ], + "description": "Identifier of the user or system that initiated the deployment." + }, + "logs": { + "type": [ + "string", + "null" + ], + "description": "Deployment log output." } }, "required": [ - "domain", - "subscription_uuid", + "id", "environment_id", "status", - "application_name", - "ownership_validation_cname", - "bandwidth_usage_tb", - "created_at", - "updated_at" + "code_reference", + "run_hooks", + "created_at" ] }, - "CDN_API_SecurityRuleSet": { + "Environment_Service_API_CodeDeploy": { "type": "object", "properties": { - "id": { + "concurrency": { "type": "integer", "minimum": 1, - "description": "The unique identifier of the security ruleset." - }, + "maximum": 100, + "description": "Maximum number of concurrent code deploys allowed for the environment." + } + }, + "required": [ + "concurrency" + ] + }, + "Environment_Service_API_Domain": { + "type": "object", + "description": "Domain properties", + "properties": { "name": { "type": "string", - "description": "The display name of the security ruleset." + "description": "The domain name." }, - "is_enabled": { + "is_managed": { "type": "boolean", - "description": "Indicates whether the security ruleset is enabled." - }, - "description": { - "type": "string", - "description": "The description of the security ruleset." + "description": "Whether the domain is managed by Acquia. `false` for `custom` and `true` for every other type. When `type` is absent, `is_managed` is still present and carries the platform's own value for the domain, which is `false` when the platform holds no recorded type. Read-only; there is no `is_managed` write parameter." }, "type": { "type": "string", - "description": "The type of the security ruleset.", + "description": "The type of the domain. `custom` is a customer's own domain. `acquia` is the generated default domain for the site instance. `environment-pattern` and `codebase-pattern` are platform-generated pattern domains. `launch-group` marks the domain as belonging to a launch group rather than to the site instance directly; it is requested on write via the `type` request property and is restricted to Acquia staff. Absent when the platform holds no recorded type for the domain, or reports one this API does not recognise.", "enum": [ - "owasp", - "acquia-managed" - ] + "custom", + "environment-pattern", + "codebase-pattern", + "acquia", + "launch-group" + ], + "example": "custom" } }, "required": [ - "id", "name", - "is_enabled" + "is_managed" ] }, - "CDN_API_IpRule": { + "Environment_Service_API_DomainStatus": { "type": "object", + "description": "Domain DNS status properties", "properties": { - "id": { - "type": "integer", - "minimum": 1, - "description": "The unique identifier of the IP rule." - }, - "display_name": { + "hostname": { "type": "string", - "description": "The display name of the IP rule." + "description": "The domain name." }, - "action": { + "site_id": { "type": "string", - "enum": [ - "block", - "allow" - ], - "description": "The action applied when the rule matches." + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the site this domain belongs to." }, - "description": { + "environment_id": { "type": "string", - "description": "The description of the IP rule." + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the environment this domain belongs to." }, - "ips": { + "ip_addresses": { "type": "array", - "description": "The IPs or CIDR blocks associated with the rule.", + "description": "List of IP addresses resolving for this domain.", "items": { - "type": "string", - "description": "An IP address or CIDR block." + "type": "string" } }, - "created_at": { + "cnames": { + "type": "array", + "description": "List of CNAME records resolving for this domain.", + "items": { + "type": "string" + } + }, + "flags": { + "type": "object", + "description": "Status flags for the domain.", + "properties": { + "default": { + "type": "boolean", + "description": "Whether this is the default domain." + }, + "active": { + "type": "boolean", + "description": "Whether the domain is active." + }, + "dns_resolves": { + "type": "boolean", + "description": "Whether the domain DNS resolves correctly." + }, + "acquia_hosted": { + "type": "boolean", + "description": "Whether the domain is hosted on Acquia infrastructure." + } + }, + "required": [ + "default", + "active", + "dns_resolves", + "acquia_hosted" + ] + } + }, + "required": [ + "hostname", + "site_id", + "environment_id", + "ip_addresses", + "cnames", + "flags" + ] + }, + "Environment_Service_API_Database": { + "type": "object", + "description": "Database properties", + "properties": { + "database_name": { "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was created." + "description": "The name of the database." }, - "updated_at": { + "database_role": { "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was last updated." + "description": "The role of the database (e.g. the site username)." } }, "required": [ - "id", - "display_name", - "action", - "ips", - "created_at", - "updated_at" + "database_name", + "database_role" ] }, - "CDN_API_CustomRule": { + "Environment_Service_API_DatabaseConnection": { "type": "object", + "description": "Database connection credential properties", "properties": { - "id": { - "type": "integer", - "minimum": 1, - "description": "The unique identifier of the custom security rule." - }, - "display_name": { + "db_host": { "type": "string", - "description": "The display name of the custom security rule." + "description": "The database host." }, - "action": { + "name": { "type": "string", - "enum": [ - "block", - "allow", - "alert" - ], - "description": "The action applied when the rule matches." - }, - "priority": { - "type": "integer", - "minimum": 1, - "description": "The priority order for the rule. Lower values are evaluated first.\nPriorities must be unique within a subscription — creating or\nupdating a rule with a priority already in use replaces the\nexisting rule at that priority.\n" + "description": "The database name." }, - "domains": { - "type": "array", - "description": "The domains the rule applies to.", - "items": { - "type": "string", - "description": "A domain name." - } + "password": { + "type": "string", + "description": "The database password." }, - "paths": { - "type": "array", - "description": "The paths the rule applies to.", - "items": { - "type": "string", - "description": "A path pattern." - } + "user_name": { + "type": "string", + "description": "The database username." }, - "mapped_domains_count": { - "type": "integer", - "description": "The number of domains the rule is mapped to." + "ssh_host": { + "type": "string", + "description": "The SSH host for tunneling to the database." + } + }, + "required": [ + "db_host", + "name", + "password", + "user_name", + "ssh_host" + ] + }, + "Environment_Service_API_DatabaseBackup": { + "type": "object", + "description": "Database backup properties", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the database backup." }, - "targets": { - "type": "array", - "description": "Conditions that must match for the rule to fire.", - "items": { - "oneOf": [ - { - "description": "Range match for IP or ASN ranges.", - "type": "object", - "required": [ - "attribute", - "criteria", - "value" - ], - "additionalProperties": false, - "properties": { - "attribute": { - "type": "string", - "description": "The request attribute the rule inspects.", - "enum": [ - "source-ip", - "asn" - ] - }, - "criteria": { - "type": "string", - "description": "How `value` is compared against `attribute`.", - "enum": [ - "range" - ] - }, - "value": { - "type": "object", - "description": "Range bounds for IP or ASN ranges.", - "additionalProperties": false, - "required": [ - "from", - "to" - ], - "properties": { - "from": { - "type": "string", - "description": "The start of the range." - }, - "to": { - "type": "string", - "description": "The end of the range." - } - } - } - } - }, - { - "description": "Value-list match for non-header, non-query attributes.", - "type": "object", - "required": [ - "attribute", - "criteria", - "value" - ], - "additionalProperties": false, - "properties": { - "attribute": { - "type": "string", - "description": "The request attribute the rule inspects.", - "enum": [ - "source-ip", - "country", - "method", - "path", - "asn" - ] - }, - "criteria": { - "type": "string", - "description": "How `value` is compared against `attribute`.", - "enum": [ - "equals", - "contains", - "regex" - ] - }, - "value": { - "type": "object", - "description": "A list of candidate values combined with OR.", - "additionalProperties": false, - "required": [ - "values" - ], - "properties": { - "values": { - "type": "array", - "description": "The list of values.", - "items": { - "type": "string", - "description": "A value." - } - } - } - } - } - }, - { - "description": "Key-value match for header or query-string attributes.", - "type": "object", - "required": [ - "attribute", - "criteria", - "value" - ], - "additionalProperties": false, - "properties": { - "attribute": { - "type": "string", - "description": "The request attribute the rule inspects.", - "enum": [ - "header", - "query-string" - ] - }, - "criteria": { - "type": "string", - "description": "How `value` is compared against `attribute`.", - "enum": [ - "equals", - "contains", - "regex" - ] - }, - "value": { - "type": "object", - "description": "Key-value matchers for header or query-string attributes.", - "additionalProperties": false, - "required": [ - "key_value_pairs" - ], - "properties": { - "key_value_pairs": { - "type": "array", - "description": "The list of key-value pairs.", - "items": { - "type": "object", - "description": "A key-value pair.", - "required": [ - "key", - "value" - ], - "properties": { - "key": { - "type": "string", - "description": "The header or query-parameter name." - }, - "value": { - "type": "string", - "description": "The expected value." - } - } - } - } - } - } - } - } - ] - } + "database_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the database this backup belongs to." }, "created_at": { "type": "string", "format": "date-time", - "description": "The timestamp when the rule was created." + "description": "Timestamp when the backup was created." }, - "updated_at": { + "type": { "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was last updated." + "enum": [ + "DAILY", + "ON_DEMAND" + ], + "description": "The type of backup." } }, "required": [ "id", - "display_name", - "action", - "priority", - "domains", - "paths", + "database_id", "created_at", - "updated_at", - "targets" + "type" ] }, - "CDN_API_RateLimitingRule": { + "Environment_Service_API_EgressIp": { "type": "object", + "description": "Egress IP properties", "properties": { "id": { - "type": "integer", - "minimum": 1, - "description": "The unique identifier of the rate limiting rule." - }, - "display_name": { "type": "string", - "description": "The display name of the rate limiting rule." + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the egress IP." }, - "action": { + "status": { "type": "string", - "enum": [ - "block", - "alert" - ], - "description": "The action applied when the rule matches." + "description": "Current status of the egress IP." }, - "rate_limit_per_minute": { + "ipv4": { "type": "string", - "enum": [ - "lenient", - "moderate", - "strict" + "description": "The IPv4 address." + }, + "ipv6": { + "type": [ + "string", + "null" ], - "description": "The rate limit category applied to the rule." + "description": "The IPv6 address, if assigned." }, - "domains": { + "flags": { + "type": "object", + "description": "Status flags for the egress IP.", + "additionalProperties": { + "type": "boolean" + } + } + }, + "required": [ + "id", + "status", + "ipv4", + "flags" + ] + }, + "Environment_Service_API_TrustedProxies": { + "type": "object", + "description": "Trusted proxy configuration properties", + "properties": { + "cidrs_ipv4": { "type": "array", - "description": "The domains the rule applies to.", + "description": "List of trusted IPv4 CIDR blocks.", "items": { - "type": "string", - "description": "A domain name." + "type": "string" } }, - "created_at": { + "cidrs_ipv6": { + "type": "array", + "description": "List of trusted IPv6 CIDR blocks.", + "items": { + "type": "string" + } + }, + "associated_cdns": { + "type": "object", + "description": "Map of CDN configurations associated with this environment, keyed by CDN name.", + "additionalProperties": { + "type": "object", + "properties": { + "label": { + "type": "string", + "description": "Display label for the CDN." + }, + "is_enabled": { + "type": "boolean", + "description": "Whether the CDN is enabled." + } + }, + "required": [ + "label", + "is_enabled" + ] + } + } + }, + "required": [ + "cidrs_ipv4", + "cidrs_ipv6", + "associated_cdns" + ] + }, + "Environment_Service_API_PrivateNetwork": { + "type": "object", + "description": "Private network reference properties", + "properties": { + "id": { "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was created." + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the private network." }, - "updated_at": { + "label": { + "type": [ + "string", + "null" + ], + "description": "Human-readable label for the private network." + } + }, + "required": [ + "id" + ] + }, + "Environment_Service_API_DomainPattern": { + "type": "object", + "properties": { + "id": { "type": "string", - "format": "date-time", - "description": "The timestamp when the rule was last updated." + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the domain pattern." + }, + "pattern": { + "type": "string", + "maxLength": 455, + "pattern": "^(?=.*\\[site-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", + "description": "The domain pattern string, optionally followed by a single path segment (e.g. [site-name].acme.com/app). The [site-name] token is mandatory; [environment-name] is optional at environment level. Domain rules (enforced in service layer): ≤ 200 chars excluding token placeholders, at least 2 components (must contain .), no IP addresses, no forbidden suffixes (acquia-sites.com, hosting.acquia.com), no wildcards, no leading/trailing dot or hyphen, no consecutive dots, no query string or fragment. Path rules: optional, max 255 chars, must match ^/[A-Za-z0-9._-]+$, max 1 segment. DNS label limit: 63 chars after token substitution ([site-name] ≤ 14 chars). One pattern per environment.\n", + "example": "[site-name].acme.com" } }, "required": [ "id", - "display_name", - "action", - "rate_limit_per_minute", - "domains", - "created_at", - "updated_at" + "pattern" ] }, - "CDN_API_HalLink": { + "Environment_Service_API_HalLink": { "type": "object", "description": "HAL link object", "properties": { @@ -163483,7 +191705,7 @@ } ] }, - "CDN_API_HalItem": { + "Environment_Service_API_HalItem": { "type": "object", "properties": { "_links": { @@ -163621,7 +191843,7 @@ "_links" ] }, - "CDN_API_HalCollection": { + "Environment_Service_API_HalCollection": { "allOf": [ { "type": "object", @@ -163787,7 +192009,7 @@ } ] }, - "CDN_API_PaginatedCollection": { + "Environment_Service_API_PaginatedCollection": { "allOf": [ { "allOf": [ @@ -164476,7 +192698,7 @@ } ] }, - "CDN_API_FilteredCollection": { + "Environment_Service_API_FilteredCollection": { "allOf": [ { "allOf": [ @@ -164859,357 +193081,7 @@ } ] }, - "CDN_API_SortedCollection": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "sort": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" - }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - } - ] - }, - "CDN_API_ValidationError": { + "Environment_Service_API_ValidationError": { "type": "object", "properties": { "error": { @@ -165231,7 +193103,7 @@ "message" ] }, - "CDN_API_Error": { + "Environment_Service_API_Error": { "type": "object", "properties": { "error": { @@ -165246,7 +193118,7 @@ "message" ] }, - "CDN_API_UnauthorizedError": { + "Environment_Service_API_UnauthorizedError": { "allOf": [ { "type": "object", @@ -165282,7 +193154,7 @@ } ] }, - "CDN_API_ForbiddenError": { + "Environment_Service_API_ForbiddenError": { "allOf": [ { "type": "object", @@ -165318,7 +193190,7 @@ } ] }, - "CDN_API_NotFoundError": { + "Environment_Service_API_NotFoundError": { "allOf": [ { "type": "object", @@ -165354,7 +193226,7 @@ } ] }, - "CDN_API_InternalServerError": { + "Environment_Service_API_InternalServerError": { "allOf": [ { "type": "object", @@ -165392,7 +193264,7 @@ } ] }, - "CDN_API_Message": { + "Environment_Service_API_Message": { "allOf": [ { "type": "object", @@ -165514,728 +193386,425 @@ "examples": [ { "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] - } - ] - }, - "CDN_API_InvalidOperationError": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "Environment_Service_API_SiteInstance": { - "type": "object", - "description": "Site Instance properties", - "properties": { - "site_id": { - "type": "string", - "description": "The unique identifier of the site", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "environment_id": { - "type": "string", - "description": "The unique identifier of the environment", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "status": { - "type": "string", - "description": "The current status of the site instance", - "enum": [ - "active", - "creating", - "create-failed", - "updating", - "update-failed", - "deleting", - "deleted", - "delete-failed" - ] - }, - "health_status": { - "type": "object", - "description": "Health status information for the site instance", - "properties": { - "code": { - "type": "string", - "description": "Health status code" - }, - "summary": { - "type": "string", - "description": "Summary of the health status" - }, - "details": { - "type": "string", - "description": "Detailed health status information" - } - }, - "required": [ - "code", - "summary", - "details" - ] - }, - "domains": { - "type": "array", - "description": "List of domains associated with the site instance", - "items": { - "type": "string" - } - }, - "deployment_order": { - "type": [ - "integer", - "null" - ], - "description": "The order in which this site instance is deployed relative to others.", - "example": 1 - }, - "delete_at": { - "type": [ - "string", - "null" - ], - "format": "date-time", - "description": "The scheduled deletion date-time for this site instance, if set." - }, - "date_marked_for_deletion": { - "type": [ - "string", - "null" - ], - "format": "date-time", - "description": "The date-time when this site instance was marked for deletion." - }, - "deployed_vcs_ref": { - "type": "string", - "description": "The VCS reference (e.g. branch or tag) that is currently deployed on this site instance.", - "example": "MT1.0.10" - }, - "code_hash": { - "type": "string", - "description": "The commit hash of the code currently deployed on this site instance.", - "example": "f70f0eaffa3bdde6622d2a3aca1a5eb2034dd899" - }, - "protection_mode": { - "type": [ - "object", - "null" - ], - "description": "The current protection mode of the site instance", - "properties": { - "is_enabled": { - "type": "boolean", - "description": "Indicates whether the protection mode is enabled for the site instance" - }, - "is_inherited": { - "type": "boolean", - "description": "Indicates whether the protection mode is inherited from the environment" - } - }, - "required": [ - "is_enabled", - "is_inherited" - ] - } - }, - "required": [ - "site_id", - "environment_id", - "status", - "health_status", - "domains" - ] - }, - "Environment_Service_API_Environment": { - "type": "object", - "description": "Environment properties", - "properties": { - "id": { - "type": "string", - "description": "The unique identifier of the environment", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "name": { - "type": "string", - "description": "The machine name of the environment" - }, - "label": { - "type": "string", - "description": "The human-readable label of the environment" - }, - "description": { - "type": "string", - "description": "A description of the environment" - }, - "status": { - "type": "string", - "description": "The current status of the environment", - "enum": [ - "normal", - "allocated", - "launching", - "killed", - "cancelled", - "stopped" - ] - }, - "flags": { - "type": "object", - "description": "Environment configuration flags", - "additionalProperties": { - "type": "boolean" - } - }, - "properties": { - "type": "object", - "description": "Environment PHP and server properties", - "properties": { - "version": { - "type": "string", - "description": "PHP version" - }, - "max_execution_time": { - "type": "integer", - "description": "Maximum execution time in seconds" - }, - "memory_limit": { - "type": "integer", - "description": "Memory limit in MB" - }, - "apcu": { - "type": "integer", - "description": "APCu cache size in MB" - }, - "client_max_body_size": { - "type": "integer", - "description": "Maximum client body size in MB" - }, - "max_input_vars": { - "type": "integer", - "description": "Maximum number of input variables" - }, - "max_post_size": { - "type": "integer", - "description": "Maximum POST size in MB" - }, - "memcached_limit": { - "type": "integer", - "description": "Memcached limit in MB" - }, - "upload_max_filesize": { - "type": "integer", - "description": "Maximum upload file size in MB" - }, - "operating_system": { - "type": "string", - "description": "Operating system codename" - } - } - }, - "reference": { - "type": "string", - "description": "The code reference (branch, tag, or commit) deployed to this environment" - }, - "code_switch_status": { - "type": "string", - "description": "The status of the Switch Code action", - "enum": [ - "IDLE", - "IN_PROGRESS" - ] - }, - "ssh_url": { - "type": "string", - "format": "uri", - "description": "The SSH connection string for accessing this environment" - } - }, - "required": [ - "id", - "name", - "label", - "status", - "flags", - "properties", - "reference", - "code_switch_status", - "ssh_url" - ] - }, - "Environment_Service_API_EmbeddedCodebase": { - "type": "object", - "description": "Embedded codebase resource", - "properties": { - "id": { - "type": "string", - "description": "The unique identifier of the codebase" - } - }, - "required": [ - "id" - ] - }, - "Environment_Service_API_Deployment": { - "type": "object", - "description": "Deployment properties", - "properties": { - "id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the deployment." - }, - "environment_id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Identifier of the environment this deployment belongs to." - }, - "status": { - "type": "string", - "description": "Current status of the deployment.", - "enum": [ - "waiting", - "received", - "started", - "done", - "failed", - "error", - "killed" - ] - }, - "code_reference": { - "type": "string", - "description": "The code reference (e.g. branch or tag) deployed." - }, - "run_hooks": { - "type": "boolean", - "description": "Whether deployment hooks were run." - }, - "hooks_argument": { - "type": [ - "string", - "null" - ], - "description": "Additional arguments passed to deployment hooks." - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "Timestamp when the deployment was created." - }, - "started_at": { - "type": [ - "string", - "null" - ], - "format": "date-time", - "description": "Timestamp when the deployment started." - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "format": "date-time", - "description": "Timestamp when the deployment completed." - }, - "sender_id": { - "type": [ - "string", - "null" - ], - "description": "Identifier of the user or system that initiated the deployment." - }, - "logs": { - "type": [ - "string", - "null" - ], - "description": "Deployment log output." - } - }, - "required": [ - "id", - "environment_id", - "status", - "code_reference", - "run_hooks", - "created_at" - ] - }, - "Environment_Service_API_CodeDeploy": { - "type": "object", - "properties": { - "concurrency": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "Maximum number of concurrent code deploys allowed for the environment." - } - }, - "required": [ - "concurrency" - ] - }, - "Environment_Service_API_Domain": { - "type": "object", - "description": "Domain properties", - "properties": { - "name": { - "type": "string", - "description": "The domain name." + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] }, - "is_managed": { - "type": "boolean", - "description": "Whether the domain is managed by Acquia." + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] } - }, - "required": [ - "name", - "is_managed" ] }, - "Environment_Service_API_DomainStatus": { - "type": "object", - "description": "Domain DNS status properties", - "properties": { - "hostname": { - "type": "string", - "description": "The domain name." - }, - "site_id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Identifier of the site this domain belongs to." - }, - "environment_id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Identifier of the environment this domain belongs to." - }, - "ip_addresses": { - "type": "array", - "description": "List of IP addresses resolving for this domain.", - "items": { - "type": "string" - } - }, - "cnames": { - "type": "array", - "description": "List of CNAME records resolving for this domain.", - "items": { - "type": "string" - } - }, - "flags": { + "Environment_Service_API_InvalidOperationError": { + "allOf": [ + { "type": "object", - "description": "Status flags for the domain.", "properties": { - "default": { - "type": "boolean", - "description": "Whether this is the default domain." - }, - "active": { - "type": "boolean", - "description": "Whether the domain is active." - }, - "dns_resolves": { - "type": "boolean", - "description": "Whether the domain DNS resolves correctly." + "error": { + "type": "string" }, - "acquia_hosted": { - "type": "boolean", - "description": "Whether the domain is hosted on Acquia infrastructure." + "message": { + "type": "string" } }, "required": [ - "default", - "active", - "dns_resolves", - "acquia_hosted" + "error", + "message" ] - } - }, - "required": [ - "hostname", - "site_id", - "environment_id", - "ip_addresses", - "cnames", - "flags" - ] - }, - "Environment_Service_API_Database": { - "type": "object", - "description": "Database properties", - "properties": { - "database_name": { - "type": "string", - "description": "The name of the database." - }, - "database_role": { - "type": "string", - "description": "The role of the database (e.g. the site username)." - } - }, - "required": [ - "database_name", - "database_role" - ] - }, - "Environment_Service_API_DatabaseConnection": { - "type": "object", - "description": "Database connection credential properties", - "properties": { - "db_host": { - "type": "string", - "description": "The database host." - }, - "name": { - "type": "string", - "description": "The database name." - }, - "password": { - "type": "string", - "description": "The database password." - }, - "user_name": { - "type": "string", - "description": "The database username." - }, - "ssh_host": { - "type": "string", - "description": "The SSH host for tunneling to the database." - } - }, - "required": [ - "db_host", - "name", - "password", - "user_name", - "ssh_host" - ] - }, - "Environment_Service_API_DatabaseBackup": { - "type": "object", - "description": "Database backup properties", - "properties": { - "id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the database backup." - }, - "database_id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Identifier of the database this backup belongs to." - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "Timestamp when the backup was created." - }, - "type": { - "type": "string", - "enum": [ - "DAILY", - "ON_DEMAND" - ], - "description": "The type of backup." - } - }, - "required": [ - "id", - "database_id", - "created_at", - "type" - ] - }, - "Environment_Service_API_EgressIp": { - "type": "object", - "description": "Egress IP properties", - "properties": { - "id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the egress IP." - }, - "status": { - "type": "string", - "description": "Current status of the egress IP." - }, - "ipv4": { - "type": "string", - "description": "The IPv4 address." }, - "ipv6": { - "type": [ - "string", - "null" - ], - "description": "The IPv6 address, if assigned." - }, - "flags": { + { "type": "object", - "description": "Status flags for the egress IP.", - "additionalProperties": { - "type": "boolean" - } + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] } - }, - "required": [ - "id", - "status", - "ipv4", - "flags" ] }, - "Environment_Service_API_TrustedProxies": { - "type": "object", - "description": "Trusted proxy configuration properties", - "properties": { - "cidrs_ipv4": { - "type": "array", - "description": "List of trusted IPv4 CIDR blocks.", - "items": { - "type": "string" - } - }, - "cidrs_ipv6": { - "type": "array", - "description": "List of trusted IPv6 CIDR blocks.", - "items": { - "type": "string" - } + "Environment_Service_API_SortedCollection": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] }, - "associated_cdns": { + { "type": "object", - "description": "Map of CDN configurations associated with this environment, keyed by CDN name.", - "additionalProperties": { - "type": "object", - "properties": { - "label": { - "type": "string", - "description": "Display label for the CDN." + "properties": { + "_links": { + "type": "object", + "properties": { + "sort": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" + } }, - "is_enabled": { - "type": "boolean", - "description": "Whether the CDN is enabled." + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" }, - "required": [ - "label", - "is_enabled" + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } ] } } - }, - "required": [ - "cidrs_ipv4", - "cidrs_ipv6", - "associated_cdns" - ] - }, - "Environment_Service_API_PrivateNetwork": { - "type": "object", - "description": "Private network reference properties", - "properties": { - "id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the private network." - }, - "label": { - "type": [ - "string", - "null" - ], - "description": "Human-readable label for the private network." - } - }, - "required": [ - "id" - ] - }, - "Environment_Service_API_DomainPattern": { - "type": "object", - "properties": { - "id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the domain pattern." - }, - "pattern": { - "type": "string", - "maxLength": 455, - "pattern": "^(?=.*\\[site-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", - "description": "The domain pattern string, optionally followed by a single path segment (e.g. [site-name].acme.com/app). The [site-name] token is mandatory; [environment-name] is optional at environment level. Domain rules (enforced in service layer): ≤ 200 chars excluding token placeholders, at least 2 components (must contain .), no IP addresses, no forbidden suffixes (acquia-sites.com, hosting.acquia.com), no wildcards, no leading/trailing dot or hyphen, no consecutive dots, no query string or fragment. Path rules: optional, max 255 chars, must match ^/[A-Za-z0-9._-]+$, max 1 segment. DNS label limit: 63 chars after token substitution ([site-name] ≤ 14 chars). One pattern per environment.\n", - "example": "[site-name].acme.com" - } - }, - "required": [ - "id", - "pattern" ] }, - "Environment_Service_API_HalLink": { + "SSH_Key_Service_API_HalLink": { "type": "object", "description": "HAL link object", "properties": { @@ -166282,18 +193851,9 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] }, - "Environment_Service_API_HalItem": { + "SSH_Key_Service_API_HalItem": { "type": "object", "properties": { "_links": { @@ -166347,15 +193907,6 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] } }, @@ -166409,15 +193960,6 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] } }, @@ -166431,7 +193973,7 @@ "_links" ] }, - "Environment_Service_API_HalCollection": { + "SSH_Key_Service_API_HalCollection": { "allOf": [ { "type": "object", @@ -166442,7 +193984,351 @@ "properties": { "self": { "type": "object", - "description": "HAL link object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + "SSH_Key_Service_API_PaginatedCollection": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + }, + "next": { + "description": "Link to the next page (templated)", + "type": "object", "properties": { "href": { "type": "string", @@ -166487,21 +194373,143 @@ }, "required": [ "href" + ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + }, + { + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } ], - "examples": [ + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] } - ] + ], + "description": "Templated link for limit" } }, - "required": [ - "self" - ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -166549,55 +194557,327 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] } }, - "_embedded": { + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] } }, "required": [ - "_links" + "count", + "total", + "pagination" ] - }, + } + ] + }, + "SSH_Key_Service_API_FilteredCollection": { + "allOf": [ { - "type": "object", - "properties": { - "_embedded": { + "allOf": [ + { "type": "object", - "description": "Embedded resources for the collection", "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "items" + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" ] } - }, - "required": [ - "_embedded" ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + }, + { + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering." + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + } + } } ] }, - "Environment_Service_API_PaginatedCollection": { + "SSH_Key_Service_API_SortedCollection": { "allOf": [ { "allOf": [ @@ -166655,15 +194935,6 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] } }, @@ -166717,15 +194988,6 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] } }, @@ -166771,9 +195033,183 @@ "_links": { "type": "object", "properties": { - "prev": { - "description": "Link to the previous page (templated)", + "sort": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + }, + { + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for sorting." + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + } + } + } + ] + }, + "SSH_Key_Service_API_SshKey": { + "allOf": [ + { + "type": "object", + "required": [ + "id", + "label", + "public_key", + "fingerprint", + "created_at", + "user_id" + ], + "description": "Details an SSH key.", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the SSH key.", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "label": { + "type": "string", + "description": "The human-readable key label." + }, + "public_key": { + "type": "string", + "description": "The public key.", + "minLength": 64 + }, + "fingerprint": { + "type": "string", + "description": "The public key fingerprint.", + "pattern": "^[A-Za-z0-9:+/=.-]+$" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The key creation date." + }, + "user_id": { + "type": "string", + "description": "The unique identifier of the user who owns this SSH key.", + "pattern": "^[a-zA-Z0-9-]+$" + } + } + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { "type": "object", + "description": "HAL link object", "properties": { "href": { "type": "string", @@ -166818,80 +195254,383 @@ }, "required": [ "href" + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] + }, + "SSH_Key_Service_API_SshKeys": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "required": [ + "self" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "required": [ + "href" + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } } + }, + "required": [ + "items" ] - }, - "next": { - "description": "Link to the next page (templated)", + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "allOf": [ + { + "allOf": [ + { "type": "object", "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] } + }, + "required": [ + "self" ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } + "_links" ] }, - "offset": { - "allOf": [ - { + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", "type": "object", - "description": "HAL link object", "properties": { "href": { "type": "string", @@ -166936,39 +195675,11 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for offset" - }, - "limit": { - "allOf": [ - { + "next": { + "description": "Link to the next page (templated)", "type": "object", - "description": "HAL link object", "properties": { "href": { "type": "string", @@ -167013,352 +195724,734 @@ }, "required": [ "href" - ], - "examples": [ + ] + }, + "offset": { + "allOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] } - ] + ], + "description": "Templated link for offset" }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + }, + { + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" ] } - }, - "required": [ - "templated" - ] + ], + "description": "Templated link for limit" } - ], - "description": "Templated link for limit" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - { - "format": "uri-template" + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + }, + "required": [ + "href" + ] } }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { - "type": "object", - "properties": { - "total": { + "count": { "type": "integer", - "description": "The total number of items available" + "description": "The number of items in the current page" }, - "limit": { + "total": { "type": "integer", - "description": "The maximum number of items to retrieve in a single page" + "description": "The total number of items available" }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] } }, "required": [ + "count", "total", - "limit", - "offset" + "pagination" ] } - }, - "required": [ - "count", - "total", - "pagination" ] - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } }, { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + ] }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 - }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", + { + "type": "object", + "properties": { "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + "type": "object", + "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + }, + { + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering." + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] } } } - ] - } - } - ] - }, - "Environment_Service_API_FilteredCollection": { - "allOf": [ + } + ] + }, { "allOf": [ { - "type": "object", - "properties": { - "_links": { + "allOf": [ + { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "_links": { "type": "object", - "description": "HAL link object", + "description": "HAL links for the resource", "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - { - "format": "uri-template" + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + }, + "required": [ + "href" + ] } }, "required": [ - "href" + "self" ], - "examples": [ + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "sort": { + "allOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] } - ] + ], + "description": "Templated link for sorting." } }, - "required": [ - "self" - ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -167406,454 +196499,217 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] } - }, - "required": [ - "_embedded" - ] + } } ] }, { "type": "object", + "description": "A collection of SSH keys.", "properties": { - "_links": { + "_embedded": { "type": "object", + "description": "A collection of SSH keys matching the request parameters.", "properties": { - "filter": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ + "items": { + "type": "array", + "items": { + "allOf": [ { - "format": "uri" + "type": "object", + "required": [ + "id", + "label", + "public_key", + "fingerprint", + "created_at", + "user_id" + ], + "description": "Details an SSH key.", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the SSH key.", + "pattern": "^[a-zA-Z0-9-]+$" + }, + "label": { + "type": "string", + "description": "The human-readable key label." + }, + "public_key": { + "type": "string", + "description": "The public key.", + "minLength": 64 + }, + "fingerprint": { + "type": "string", + "description": "The public key fingerprint.", + "pattern": "^[A-Za-z0-9:+/=.-]+$" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The key creation date." + }, + "user_id": { + "type": "string", + "description": "The unique identifier of the user who owns this SSH key.", + "pattern": "^[a-zA-Z0-9-]+$" + } + } }, { - "format": "uri-template" + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" + ] } } }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" - } - } - } - ] - } - } - ] - }, - "Environment_Service_API_ValidationError": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - }, - "required": [ - "error", - "message" - ] - }, - "Environment_Service_API_Error": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - "Environment_Service_API_UnauthorizedError": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "Environment_Service_API_ForbiddenError": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." + "required": [ + "items" + ] } }, "required": [ - "error", - "message" + "_embedded" ] } ] }, - "Environment_Service_API_NotFoundError": { + "SSH_Key_Service_API_Message": { "allOf": [ { "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, "required": [ - "error", "message" - ] - }, - { - "type": "object", + ], "properties": { - "error": { - "type": "string", - "const": "not_found" - }, "message": { "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "Environment_Service_API_InternalServerError": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" + "description": "The human-friendly confirmation of the operation." } - }, - "required": [ - "error", - "message" - ] + } }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "Environment_Service_API_Message": { - "allOf": [ { "type": "object", "properties": { @@ -167908,15 +196764,6 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] } }, @@ -167970,452 +196817,313 @@ }, "required": [ "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] - } - ] - }, - "Environment_Service_API_InvalidOperationError": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "Environment_Service_API_SortedCollection": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "sort": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } ] } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } + }, + "required": [ + "_links" + ] + } + ] + }, + "SSH_Key_Service_API_ValidationError": { + "type": "object", + "required": [ + "error", + "message" + ], + "description": "A validation error.", + "properties": { + "error": { + "type": "string", + "description": "The error summary." + }, + "message": { + "type": "object", + "description": "The validation error message keyed by its field or group name.", + "additionalProperties": { + "type": "string" } } + } + }, + "SSH_Key_Service_API_Error": { + "type": "object", + "required": [ + "error", + "message" ], - "examples": [ + "properties": { + "error": { + "type": "string", + "description": "The error summary." + }, + "message": { + "type": "string", + "description": "The long description for the returned error." + } + } + }, + "SSH_Key_Service_API_UnauthorizedError": { + "allOf": [ { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" + "type": "object", + "required": [ + "error", + "message" + ], + "properties": { + "error": { + "type": "string", + "description": "The error summary." }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", - "templated": true + "message": { + "type": "string", + "description": "The long description for the returned error." + } + } + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." } }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] + "required": [ + "error", + "message" + ] + } + ] + }, + "SSH_Key_Service_API_ForbiddenError": { + "allOf": [ + { + "type": "object", + "required": [ + "error", + "message" + ], + "properties": { + "error": { + "type": "string", + "description": "The error summary." + }, + "message": { + "type": "string", + "description": "The long description for the returned error." + } + } + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "SSH_Key_Service_API_NotFoundError": { + "allOf": [ + { + "type": "object", + "required": [ + "error", + "message" + ], + "properties": { + "error": { + "type": "string", + "description": "The error summary." + }, + "message": { + "type": "string", + "description": "The long description for the returned error." + } } + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] } ] }, - "Tag_API_Tag": { + "SSH_Key_Service_API_InvalidOperationError": { + "allOf": [ + { + "type": "object", + "required": [ + "error", + "message" + ], + "properties": { + "error": { + "type": "string", + "description": "The error summary." + }, + "message": { + "type": "string", + "description": "The long description for the returned error." + } + } + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "SSH_Key_Service_API_InternalServerError": { + "allOf": [ + { + "type": "object", + "required": [ + "error", + "message" + ], + "properties": { + "error": { + "type": "string", + "description": "The error summary." + }, + "message": { + "type": "string", + "description": "The long description for the returned error." + } + } + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "Site_Service_API_Site": { "type": "object", + "description": "A Site resource", "properties": { - "name": { + "id": { "type": "string", + "description": "The unique identifier of the site", "pattern": "^[a-zA-Z0-9-]+$", + "example": "12345678-1234-1234-1234-123456789012" + }, + "name": { + "type": "string", + "description": "The machine name of the site. Must start with a lowercase letter and contain only lowercase letters and numbers.", "minLength": 1, - "maxLength": 255, - "description": "The name of the tag" + "maxLength": 14, + "pattern": "^[a-z][a-z0-9]*$", + "example": "mysite" }, - "color": { + "label": { "type": "string", - "pattern": "^#((?:[a-f0-9]{3}){1,2})$", - "minLength": 4, - "maxLength": 7, - "description": "The color of the tag" + "description": "The human-readable label of the site", + "minLength": 1, + "maxLength": 50, + "example": "My Site 1" + }, + "description": { + "type": "string", + "description": "A description of the site", + "maxLength": 512, + "example": "A production site for the marketing team." + }, + "codebase_id": { + "type": "string", + "description": "The unique identifier of the codebase this site belongs to", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "550e8400-e29b-41d4-a716-446655441210" + }, + "status": { + "type": "string", + "description": "The current lifecycle status of the site. ready indicates the site is active and operational. marked-for-deletion indicates the site has been scheduled for deletion and can still be recovered.\n", + "enum": [ + "ready", + "marked-for-deletion" + ], + "example": "ready" + }, + "delete_at": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 datetime indicating when the site is scheduled for deletion. Only present when status is marked-for-deletion.", + "example": "2025-06-15T00:00:00Z" } }, "required": [ + "id", "name", - "color" + "label", + "codebase_id", + "status" ] }, - "Tag_API_HalLink": { + "Site_Service_API_HalLink": { "type": "object", "description": "HAL link object", "properties": { @@ -168473,7 +197181,7 @@ } ] }, - "Tag_API_HalItem": { + "Site_Service_API_HalItem": { "type": "object", "properties": { "_links": { @@ -168611,7 +197319,7 @@ "_links" ] }, - "Tag_API_HalCollection": { + "Site_Service_API_HalCollection": { "allOf": [ { "type": "object", @@ -168777,7 +197485,7 @@ } ] }, - "Tag_API_PaginatedCollection": { + "Site_Service_API_PaginatedCollection": { "allOf": [ { "allOf": [ @@ -169466,7 +198174,7 @@ } ] }, - "Tag_API_FilteredCollection": { + "Site_Service_API_FilteredCollection": { "allOf": [ { "allOf": [ @@ -169849,7 +198557,7 @@ } ] }, - "Tag_API_SortedCollection": { + "Site_Service_API_SortedCollection": { "allOf": [ { "allOf": [ @@ -170199,14 +198907,21 @@ } ] }, - "Tag_API_Error": { + "Site_Service_API_ValidationError": { "type": "object", "properties": { "error": { "type": "string" }, "message": { - "type": "string" + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } } }, "required": [ @@ -170214,43 +198929,22 @@ "message" ] }, - "Tag_API_UnauthorizedError": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] + "Site_Service_API_Error": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" } + }, + "required": [ + "error", + "message" ] }, - "Tag_API_ForbiddenError": { + "Site_Service_API_UnauthorizedError": { "allOf": [ { "type": "object", @@ -170272,11 +198966,11 @@ "properties": { "error": { "type": "string", - "const": "forbidden" + "const": "unauthorized" }, "message": { "type": "string", - "example": "You do not have permission to perform this action." + "const": "You do not have permission to access this resource." } }, "required": [ @@ -170286,7 +198980,7 @@ } ] }, - "Tag_API_NotFoundError": { + "Site_Service_API_ForbiddenError": { "allOf": [ { "type": "object", @@ -170308,11 +199002,11 @@ "properties": { "error": { "type": "string", - "const": "not_found" + "const": "forbidden" }, "message": { "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." + "example": "You do not have permission to perform this action." } }, "required": [ @@ -170322,7 +199016,7 @@ } ] }, - "Tag_API_InternalServerError": { + "Site_Service_API_InternalServerError": { "allOf": [ { "type": "object", @@ -170360,7 +199054,7 @@ } ] }, - "Tag_API_Message": { + "Site_Service_API_Message": { "allOf": [ { "type": "object", @@ -170514,29 +199208,7 @@ } ] }, - "Tag_API_ValidationError": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - }, - "required": [ - "error", - "message" - ] - }, - "Tag_API_InvalidOperationError": { + "Site_Service_API_NotFoundError": { "allOf": [ { "type": "object", @@ -170558,11 +199230,11 @@ "properties": { "error": { "type": "string", - "const": "conflict" + "const": "not_found" }, "message": { "type": "string", - "example": "The requested operation is invalid or cannot be completed." + "example": "The resource you are trying to access does not exist, or you do not have access to it." } }, "required": [ @@ -170572,132 +199244,83 @@ } ] }, - "Codebase_Service_API_Codebase": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Unique identifier for the codebase" - }, - "label": { - "type": "string", - "description": "Human-readable label for the codebase" - }, - "region": { - "type": "string", - "description": "AWS region of the codebase" - }, - "vcs_url": { - "type": "string", - "format": "uri", - "description": "VCS repository URL" - }, - "repository_id": { - "type": "string", - "description": "VCS repository identifier" - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "Creation timestamp" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "description": "Last update timestamp" - }, - "description": { - "type": "string", - "description": "Description of the codebase" - }, - "flags": { + "Site_Service_API_InvalidOperationError": { + "allOf": [ + { "type": "object", "properties": { - "is_active": { - "type": "boolean", - "description": "Whether the codebase is active" + "error": { + "type": "string" }, - "is_meo": { - "type": "boolean", - "description": "Whether the codebase is MEO" + "message": { + "type": "string" } }, "required": [ - "is_active", - "is_meo" - ], - "description": "Feature flags for the codebase" - }, - "hash": { - "type": "string", - "description": "Codebase hash" + "error", + "message" + ] }, - "applications_total": { - "type": "integer", - "description": "Total number of applications linked to this codebase" + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] } - }, - "required": [ - "id", - "label", - "region", - "vcs_url", - "repository_id", - "created_at", - "updated_at", - "flags", - "hash", - "applications_total" ] }, - "Codebase_Service_API_CodebaseReference": { + "New_Relic_Provisioning_API_NewRelicAccount": { "type": "object", "properties": { - "id": { + "entitlement_id": { "type": "string", - "description": "Unique identifier for the reference" + "description": "Acquia entitlement UUID for this New Relic account." }, - "name": { + "subscription_id": { "type": "string", - "description": "Name of the git reference" + "description": "Acquia subscription UUID associated with this entitlement." }, - "type": { + "nr_account_id": { + "type": "string", + "description": "New Relic account ID; absent until provisioning completes." + }, + "status": { "type": "string", "enum": [ - "branch", - "tag" + "provisioning", + "active", + "deprovisioning", + "cancelled", + "transferred-out", + "failed" ], - "description": "Type of the git reference" - } - }, - "required": [ - "id", - "name", - "type" - ] - }, - "Codebase_Service_API_DomainPattern": { - "type": "object", - "properties": { - "id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "Unique identifier for the domain pattern." + "description": "Lifecycle state of the New Relic account: provisioning — creation in progress; active — fully provisioned, NR account and admin invite issued; deprovisioning — cancellation in progress; cancelled — account cancelled, row retained for audit; transferred-out — account transferred out of Acquia parent, not cancelled by this service; failed — a step failed, re-trigger via a new broker event or ops tooling.\n" }, - "pattern": { + "created_at": { "type": "string", - "maxLength": 455, - "pattern": "^(?=.*\\[site-name\\])(?=.*\\[environment-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", - "description": "The domain pattern string, optionally followed by a single path segment (e.g. [site-name].[environment-name].acme.com/app). Both [site-name] and [environment-name] tokens are mandatory at codebase level. Domain rules (enforced in service layer): ≤ 200 chars excluding token placeholders, at least 2 components (must contain .), no IP addresses, no forbidden suffixes (acquia-sites.com, hosting.acquia.com), no wildcards, no leading/trailing dot or hyphen, no consecutive dots, no query string or fragment. Path rules: optional, max 255 chars, must match ^/[A-Za-z0-9._-]+$, max 1 segment. DNS label limit: 63 chars after token substitution ([site-name] ≤ 14 chars, [environment-name] ≤ 10 chars). One pattern per codebase.\n", - "example": "[site-name].[environment-name].acme.com" + "format": "date-time", + "description": "Timestamp when the provisioning record was created." } }, "required": [ - "id", - "pattern" + "entitlement_id", + "subscription_id", + "status", + "created_at" ] }, - "Codebase_Service_API_HalLink": { + "New_Relic_Provisioning_API_HalLink": { "type": "object", "description": "HAL link object", "properties": { @@ -170755,7 +199378,7 @@ } ] }, - "Codebase_Service_API_HalItem": { + "New_Relic_Provisioning_API_HalItem": { "type": "object", "properties": { "_links": { @@ -170893,7 +199516,7 @@ "_links" ] }, - "Codebase_Service_API_HalCollection": { + "New_Relic_Provisioning_API_HalCollection": { "allOf": [ { "type": "object", @@ -171059,7 +199682,7 @@ } ] }, - "Codebase_Service_API_PaginatedCollection": { + "New_Relic_Provisioning_API_PaginatedCollection": { "allOf": [ { "allOf": [ @@ -171665,846 +200288,90 @@ "templated": true }, "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 - }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - } - ] - }, - "Codebase_Service_API_FilteredCollection": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "filter": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" - } - } - }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" - } - } - } - ] - } - } - ] - }, - "Codebase_Service_API_ValidationError": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } - } - }, - "required": [ - "error", - "message" - ] - }, - "Codebase_Service_API_Error": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - "Codebase_Service_API_UnauthorizedError": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "Codebase_Service_API_ForbiddenError": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "Codebase_Service_API_InternalServerError": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "Codebase_Service_API_NotFoundError": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "Codebase_Service_API_Message": { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] - } - ] - }, - "Codebase_Service_API_InvalidOperationError": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true } }, - "required": [ - "error", - "message" - ] + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } }, { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true } }, - "required": [ - "error", - "message" - ] + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } } ] }, - "Codebase_Service_API_SortedCollection": { + "New_Relic_Provisioning_API_FilteredCollection": { "allOf": [ { "allOf": [ @@ -172678,7 +200545,7 @@ "_links": { "type": "object", "properties": { - "sort": { + "filter": { "allOf": [ { "type": "object", @@ -172753,7 +200620,7 @@ ] } ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" } }, "additionalProperties": { @@ -172822,10 +200689,10 @@ { "_links": { "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", "templated": true } }, @@ -172851,119 +200718,602 @@ } ] } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } } ] }, - "Failover_Service_API_FailoverGroup": { + "New_Relic_Provisioning_API_Error": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + "New_Relic_Provisioning_API_UnauthorizedError": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "New_Relic_Provisioning_API_ForbiddenError": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "New_Relic_Provisioning_API_InternalServerError": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "Launch_Group_API_LaunchGroup": { "type": "object", "properties": { "id": { "type": "string", - "description": "Unique identifier for the failover group.", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the launch group.", "example": "b2c3d4e5-f6a7-8901-bcde-f12345678901" }, "name": { "type": "string", - "description": "The name of the failover group.", - "example": "Primary Failover Group" + "pattern": "^[a-zA-Z0-9]{1,52}$", + "maxLength": 52, + "description": "The name of the launch group. Alphanumeric only; maximum 52 characters. Can be changed via `PUT /launch-groups/{launchGroupId}`; renaming does not regenerate `fqdn`, so the two may permanently disagree after a rename.", + "example": "MyLaunchGroup" + }, + "description": { + "type": [ + "string", + "null" + ], + "maxLength": 512, + "description": "An optional, free-text description of the launch group. Always present in the response; null if none is currently set -- either because none was ever supplied or because a later update via `PUT /launch-groups/{launchGroupId}` cleared it.", + "example": "Marketing campaign for Q3 launch" + }, + "codebase_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the codebase this launch group belongs to.", + "example": "d3f7270e-c45f-4801-9308-5e8afe84a323" + }, + "fqdn": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$", + "description": "The Acquia-generated fully-qualified domain name customers CNAME their custom domains to. Generated once from the lowercased name the group had at creation and never regenerated afterward, including when `name` is later changed via `PUT /launch-groups/{launchGroupId}`, so `name` and `fqdn` may permanently disagree.", + "example": "mylaunchgroup-a1b2c3d-lg.prod.acquia-sites.com" }, "status": { "type": "string", "enum": [ - "creating", - "normal", - "failed-over", - "failing-over", - "error", - "deleting", - "deleted" + "idle", + "switch-in-progress", + "failed", + "degraded" ], - "description": "The current status of the failover group.", - "example": "normal" - }, - "pairs": { - "type": "array", - "description": "The list of failover pairs belonging to this failover group.", - "items": { - "type": "object", - "properties": { - "service_name": { - "type": "string", - "description": "The name of the service for this failover pair.", - "example": "my-application-service" - }, - "primary_id": { - "type": "string", - "description": "The ID of the primary resource in the failover pair.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "failover_id": { - "type": "string", - "description": "The UUID of the failover resource in the failover pair.", - "example": "f1e2d3c4-b5a6-7890-fedc-ba9876543210" - } - }, - "required": [ - "service_name", - "primary_id", - "failover_id" - ] - } + "description": "The current state of the launch group. `switch-in-progress` while a publish switch is running; `failed` if the last publish switch did not complete (safe to retry); `degraded` if the group has no Published member (for example, its Published site instance was deleted at the platform level).", + "example": "idle" } }, "required": [ "id", "name", - "status", - "pairs" + "description", + "codebase_id", + "fqdn", + "status" ] }, - "Failover_Service_API_FailoverPair": { + "Launch_Group_API_LaunchGroupMemberSiteInstance": { "type": "object", "properties": { - "service_name": { + "site_id": { "type": "string", - "description": "The name of the service for this failover pair.", - "example": "my-application-service" + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the member site instance's site.", + "example": "3e8ecbec-ea7c-4260-8414-ef2938c859bc" }, - "primary_id": { + "environment_id": { "type": "string", - "description": "The ID of the primary resource in the failover pair.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Identifier of the environment the member site instance runs in.", + "example": "d3f7270e-c45f-4801-9308-5e8afe84a323" }, - "failover_id": { - "type": "string", - "description": "The UUID of the failover resource in the failover pair.", - "example": "f1e2d3c4-b5a6-7890-fedc-ba9876543210" + "is_published": { + "type": "boolean", + "description": "Whether this member is currently the Published site instance serving the launch group's domains.", + "example": true } }, "required": [ - "service_name", - "primary_id", - "failover_id" + "site_id", + "environment_id", + "is_published" ] }, - "Failover_Service_API_MultiRegionFailoverStatus": { + "Launch_Group_API_LaunchGroupDomain": { "type": "object", + "description": "A domain assigned to a launch group. The group's own `fqdn` is the domain with `is_removable: false`.", "properties": { - "is_enabled": { - "type": "boolean", - "description": "Whether multi-region failover is enabled for the environment." + "name": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$", + "description": "The fully-qualified domain name.", + "example": "www.example.com" }, - "failover_group_id": { + "dns_status": { "type": "string", - "description": "The identifier of the failover group associated with the environment." + "enum": [ + "pending", + "dns-updated", + "dns-not-updated", + "not-found" + ], + "description": "Cached DNS cutover status as of the last recheck. `pending` when the domain does not resolve yet; `dns-not-updated` when it resolves, but not to the launch group's `fqdn`; `dns-updated` when it resolves to the launch group's `fqdn`; `not-found` when the domain is not registered on the Published site instance. The launch group's own `fqdn` is always `dns-updated`. Updated only by `POST /launch-groups/{launchGroupId}/actions/dns-recheck`.", + "example": "pending" }, - "is_traffic_failed_over": { + "last_checked_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "Timestamp of the last DNS status check for this domain. Always present; null until the first DNS recheck.", + "example": "2026-07-20T14:32:00Z" + }, + "is_removable": { "type": "boolean", - "description": "Whether traffic has been failed over to the secondary region." + "description": "Whether the domain can be removed from the launch group. `false` only for the launch group's own `fqdn`; `true` for every customer-assigned domain.", + "example": true } }, "required": [ - "is_enabled" + "name", + "dns_status", + "last_checked_at", + "is_removable" ] }, - "Failover_Service_API_HalLink": { + "Launch_Group_API_LaunchGroupLinks": { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "member-site-instances": { + "description": "The launch group's member site instances. Always present.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "domains": { + "description": "The domains assigned to the launch group. Always present.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "dns-recheck": { + "description": "Queues a DNS recheck for the launch group's domains. Always present.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "publish": { + "description": "Promotes a member to Published. Present unless `status` is `switch-in-progress`.", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self", + "member-site-instances", + "domains", + "dns-recheck" + ] + } + } + }, + "Launch_Group_API_HalLink": { "type": "object", "description": "HAL link object", "properties": { @@ -173021,7 +201371,7 @@ } ] }, - "Failover_Service_API_HalItem": { + "Launch_Group_API_HalItem": { "type": "object", "properties": { "_links": { @@ -173159,7 +201509,380 @@ "_links" ] }, - "Failover_Service_API_HalCollection": { + "Launch_Group_API_Error": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + "Launch_Group_API_UnauthorizedError": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "Launch_Group_API_ForbiddenError": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "Launch_Group_API_NotFoundError": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "Launch_Group_API_InternalServerError": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "Launch_Group_API_Message": { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + "Launch_Group_API_ValidationError": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "Launch_Group_API_InvalidOperationError": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "Launch_Group_API_HalCollection": { "allOf": [ { "type": "object", @@ -173325,7 +202048,7 @@ } ] }, - "Failover_Service_API_PaginatedCollection": { + "Launch_Group_API_PaginatedCollection": { "allOf": [ { "allOf": [ @@ -174014,7 +202737,7 @@ } ] }, - "Failover_Service_API_FilteredCollection": { + "Launch_Group_API_FilteredCollection": { "allOf": [ { "allOf": [ @@ -174397,420 +203120,452 @@ } ] }, - "Failover_Service_API_ValidationError": { + "CDN_API_Domain": { "type": "object", + "description": "CDN domain resource.", "properties": { - "error": { - "type": "string" + "domain": { + "type": "string", + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]?(\\.[a-zA-Z]{2,})+$", + "description": "The fully qualified domain name." }, - "message": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "example": { - "field_name": "This field is required.", - "another_field": "This field must be a valid format." - } + "subscription_uuid": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "The unique identifier of the subscription the domain belongs to." + }, + "environment_id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "The environment identifier associated with the domain." + }, + "application_name": { + "type": "string", + "description": "The name of the application associated with the domain." + }, + "status": { + "type": "string", + "description": "The current status of the domain.", + "enum": [ + "connecting-to-edge", + "domain-validation-pending", + "ready-for-dns-repointing", + "configuration-failed", + "configured" + ] + }, + "ownership_validation_cname": { + "type": "string", + "description": "The CNAME record that must be created on the domain's DNS to validate ownership." + }, + "bandwidth_usage_tb": { + "type": "number", + "format": "float", + "description": "The bandwidth usage for the domain in terabytes." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the domain was created." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the domain was last updated." } }, "required": [ - "error", - "message" + "domain", + "subscription_uuid", + "environment_id", + "status", + "application_name", + "ownership_validation_cname", + "bandwidth_usage_tb", + "created_at", + "updated_at" ] }, - "Failover_Service_API_Error": { + "CDN_API_SecurityRuleSet": { "type": "object", "properties": { - "error": { - "type": "string" + "id": { + "type": "integer", + "minimum": 1, + "description": "The unique identifier of the security ruleset." }, - "message": { - "type": "string" + "name": { + "type": "string", + "description": "The display name of the security ruleset." + }, + "is_enabled": { + "type": "boolean", + "description": "Indicates whether the security ruleset is enabled." + }, + "description": { + "type": "string", + "description": "The description of the security ruleset." + }, + "type": { + "type": "string", + "description": "The type of the security ruleset.", + "enum": [ + "owasp", + "acquia-managed" + ] } }, "required": [ - "error", - "message" + "id", + "name", + "is_enabled" ] }, - "Failover_Service_API_UnauthorizedError": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] + "CDN_API_IpRule": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": 1, + "description": "The unique identifier of the IP rule." }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "unauthorized" - }, - "message": { - "type": "string", - "const": "You do not have permission to access this resource." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "Failover_Service_API_ForbiddenError": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] + "display_name": { + "type": "string", + "description": "The display name of the IP rule." }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "forbidden" - }, - "message": { - "type": "string", - "example": "You do not have permission to perform this action." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "Failover_Service_API_InternalServerError": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] + "action": { + "type": "string", + "enum": [ + "block", + "allow" + ], + "description": "The action applied when the rule matches." }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "system" - }, - "message": { - "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." - } - }, - "required": [ - "error", - "message" - ] + "description": { + "type": "string", + "description": "The description of the IP rule." + }, + "ips": { + "type": "array", + "description": "The IPs or CIDR blocks associated with the rule.", + "items": { + "type": "string", + "description": "An IP address or CIDR block." + } + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the rule was created." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the rule was last updated." } + }, + "required": [ + "id", + "display_name", + "action", + "ips", + "created_at", + "updated_at" ] }, - "Failover_Service_API_Message": { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { + "CDN_API_CustomRule": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": 1, + "description": "The unique identifier of the custom security rule." + }, + "display_name": { + "type": "string", + "description": "The display name of the custom security rule." + }, + "action": { + "type": "string", + "enum": [ + "block", + "allow", + "alert" + ], + "description": "The action applied when the rule matches." + }, + "priority": { + "type": "integer", + "minimum": 1, + "description": "The priority order for the rule. Lower values are evaluated first.\nPriorities must be unique within a subscription — creating or\nupdating a rule with a priority already in use replaces the\nexisting rule at that priority.\n" + }, + "domains": { + "type": "array", + "description": "The domains the rule applies to.", + "items": { + "type": "string", + "description": "A domain name." + } + }, + "paths": { + "type": "array", + "description": "The paths the rule applies to.", + "items": { + "type": "string", + "description": "A path pattern." + } + }, + "mapped_domains_count": { + "type": "integer", + "description": "The number of domains the rule is mapped to." + }, + "targets": { + "type": "array", + "description": "Conditions that must match for the rule to fire.", + "items": { + "oneOf": [ + { + "description": "Range match for IP or ASN ranges.", "type": "object", - "description": "HAL link object", + "required": [ + "attribute", + "criteria", + "value" + ], + "additionalProperties": false, "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { + "attribute": { "type": "string", - "description": "A URL to a resource that provides deprecation information" + "description": "The request attribute the rule inspects.", + "enum": [ + "source-ip", + "asn" + ] }, - "name": { + "criteria": { "type": "string", - "description": "A secondary key for selecting links" + "description": "How `value` is compared against `attribute`.", + "enum": [ + "range" + ] }, - "profile": { + "value": { + "type": "object", + "description": "Range bounds for IP or ASN ranges.", + "additionalProperties": false, + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "type": "string", + "description": "The start of the range." + }, + "to": { + "type": "string", + "description": "The end of the range." + } + } + } + } + }, + { + "description": "Value-list match for non-header, non-query attributes.", + "type": "object", + "required": [ + "attribute", + "criteria", + "value" + ], + "additionalProperties": false, + "properties": { + "attribute": { "type": "string", - "description": "A URI that hints about the profile of the target resource" + "description": "The request attribute the rule inspects.", + "enum": [ + "source-ip", + "country", + "method", + "path", + "asn" + ] }, - "title": { + "criteria": { "type": "string", - "description": "A human-readable identifier for the link" + "description": "How `value` is compared against `attribute`.", + "enum": [ + "equals", + "contains", + "regex" + ] }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + "value": { + "type": "object", + "description": "A list of candidate values combined with OR.", + "additionalProperties": false, + "required": [ + "values" + ], + "properties": { + "values": { + "type": "array", + "description": "The list of values.", + "items": { + "type": "string", + "description": "A value." + } + } + } } - }, + } + }, + { + "description": "Key-value match for header or query-string attributes.", + "type": "object", "required": [ - "href" + "attribute", + "criteria", + "value" ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + "additionalProperties": false, + "properties": { + "attribute": { + "type": "string", + "description": "The request attribute the rule inspects.", + "enum": [ + "header", + "query-string" + ] }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "criteria": { + "type": "string", + "description": "How `value` is compared against `attribute`.", + "enum": [ + "equals", + "contains", + "regex" + ] + }, + "value": { + "type": "object", + "description": "Key-value matchers for header or query-string attributes.", + "additionalProperties": false, + "required": [ + "key_value_pairs" + ], + "properties": { + "key_value_pairs": { + "type": "array", + "description": "The list of key-value pairs.", + "items": { + "type": "object", + "description": "A key-value pair.", + "required": [ + "key", + "value" + ], + "properties": { + "key": { + "type": "string", + "description": "The header or query-parameter name." + }, + "value": { + "type": "string", + "description": "The expected value." + } + } + } + } + } } - ] + } } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message content" - } - }, - "required": [ - "message" - ] - } - ] - }, - "Failover_Service_API_InvalidOperationError": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] + ] + } }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - }, - "Failover_Service_API_NotFoundError": { - "allOf": [ - { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "error", - "message" - ] + "created_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the rule was created." }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "not_found" - }, - "message": { - "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." - } - }, - "required": [ - "error", - "message" - ] + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the rule was last updated." } + }, + "required": [ + "id", + "display_name", + "action", + "priority", + "domains", + "paths", + "created_at", + "updated_at", + "targets" ] }, - "New_Relic_Provisioning_API_NewRelicAccount": { + "CDN_API_RateLimitingRule": { "type": "object", "properties": { - "entitlement_id": { - "type": "string", - "description": "Acquia entitlement UUID for this New Relic account." + "id": { + "type": "integer", + "minimum": 1, + "description": "The unique identifier of the rate limiting rule." }, - "subscription_id": { + "display_name": { "type": "string", - "description": "Acquia subscription UUID associated with this entitlement." + "description": "The display name of the rate limiting rule." }, - "nr_account_id": { + "action": { "type": "string", - "description": "New Relic account ID; absent until provisioning completes." + "enum": [ + "block", + "alert" + ], + "description": "The action applied when the rule matches." }, - "status": { + "rate_limit_per_minute": { "type": "string", "enum": [ - "provisioning", - "active", - "deprovisioning", - "cancelled", - "transferred-out", - "failed" + "lenient", + "moderate", + "strict" ], - "description": "Lifecycle state of the New Relic account: provisioning — creation in progress; active — fully provisioned, NR account and admin invite issued; deprovisioning — cancellation in progress; cancelled — account cancelled, row retained for audit; transferred-out — account transferred out of Acquia parent, not cancelled by this service; failed — a step failed, re-trigger via a new broker event or ops tooling.\n" + "description": "The rate limit category applied to the rule." + }, + "domains": { + "type": "array", + "description": "The domains the rule applies to.", + "items": { + "type": "string", + "description": "A domain name." + } }, "created_at": { "type": "string", "format": "date-time", - "description": "Timestamp when the provisioning record was created." + "description": "The timestamp when the rule was created." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the rule was last updated." } }, "required": [ - "entitlement_id", - "subscription_id", - "status", - "created_at" + "id", + "display_name", + "action", + "rate_limit_per_minute", + "domains", + "created_at", + "updated_at" ] }, - "New_Relic_Provisioning_API_HalLink": { + "CDN_API_HalLink": { "type": "object", "description": "HAL link object", "properties": { @@ -174868,7 +203623,7 @@ } ] }, - "New_Relic_Provisioning_API_HalItem": { + "CDN_API_HalItem": { "type": "object", "properties": { "_links": { @@ -175006,7 +203761,7 @@ "_links" ] }, - "New_Relic_Provisioning_API_HalCollection": { + "CDN_API_HalCollection": { "allOf": [ { "type": "object", @@ -175172,7 +203927,7 @@ } ] }, - "New_Relic_Provisioning_API_PaginatedCollection": { + "CDN_API_PaginatedCollection": { "allOf": [ { "allOf": [ @@ -175861,7 +204616,7 @@ } ] }, - "New_Relic_Provisioning_API_FilteredCollection": { + "CDN_API_FilteredCollection": { "allOf": [ { "allOf": [ @@ -176244,7 +204999,379 @@ } ] }, - "New_Relic_Provisioning_API_Error": { + "CDN_API_SortedCollection": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "sort": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" + }, + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + } + ] + }, + "CDN_API_ValidationError": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "CDN_API_Error": { "type": "object", "properties": { "error": { @@ -176259,7 +205386,7 @@ "message" ] }, - "New_Relic_Provisioning_API_UnauthorizedError": { + "CDN_API_UnauthorizedError": { "allOf": [ { "type": "object", @@ -176295,7 +205422,7 @@ } ] }, - "New_Relic_Provisioning_API_ForbiddenError": { + "CDN_API_ForbiddenError": { "allOf": [ { "type": "object", @@ -176331,7 +205458,235 @@ } ] }, - "New_Relic_Provisioning_API_InternalServerError": { + "CDN_API_NotFoundError": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" + }, + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "CDN_API_InternalServerError": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "CDN_API_Message": { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] + } + ] + }, + "CDN_API_InvalidOperationError": { "allOf": [ { "type": "object", @@ -176353,13 +205708,11 @@ "properties": { "error": { "type": "string", - "const": "system" + "const": "conflict" }, "message": { "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + "example": "The requested operation is invalid or cannot be completed." } }, "required": [ @@ -176369,7 +205722,30 @@ } ] }, - "SSH_Key_Service_API_HalLink": { + "Tag_API_Tag": { + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "minLength": 1, + "maxLength": 255, + "description": "The name of the tag" + }, + "color": { + "type": "string", + "pattern": "^#((?:[a-f0-9]{3}){1,2})$", + "minLength": 4, + "maxLength": 7, + "description": "The color of the tag" + } + }, + "required": [ + "name", + "color" + ] + }, + "Tag_API_HalLink": { "type": "object", "description": "HAL link object", "properties": { @@ -176416,9 +205792,18 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] }, - "SSH_Key_Service_API_HalItem": { + "Tag_API_HalItem": { "type": "object", "properties": { "_links": { @@ -176472,6 +205857,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -176525,6 +205919,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -176538,7 +205941,7 @@ "_links" ] }, - "SSH_Key_Service_API_HalCollection": { + "Tag_API_HalCollection": { "allOf": [ { "type": "object", @@ -176594,6 +205997,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -176647,6 +206059,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -176686,7 +206107,7 @@ } ] }, - "SSH_Key_Service_API_PaginatedCollection": { + "Tag_API_PaginatedCollection": { "allOf": [ { "allOf": [ @@ -176744,6 +206165,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -176797,6 +206227,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -176889,6 +206328,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] }, "next": { @@ -176938,6 +206386,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] }, "offset": { @@ -176989,9 +206446,19 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] }, { + "type": "object", "properties": { "templated": { "type": "boolean", @@ -177056,9 +206523,19 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] }, { + "type": "object", "properties": { "templated": { "type": "boolean", @@ -177119,52 +206596,207 @@ "type": "string", "description": "The language of the target resource" } - }, - "required": [ - "href" - ] + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] + } + }, + "required": [ + "count", + "total", + "pagination" + ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" }, - "count": { - "type": "integer", - "description": "The number of items in the current page" + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" }, - "total": { - "type": "integer", - "description": "The total number of items available" + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true }, - "pagination": { - "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" - } - }, - "required": [ - "total", - "limit", - "offset" - ] + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true } }, - "required": [ - "count", - "total", - "pagination" - ] + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } } ] }, - "SSH_Key_Service_API_FilteredCollection": { + "Tag_API_FilteredCollection": { "allOf": [ { "allOf": [ @@ -177222,6 +206854,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -177275,6 +206916,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -177369,9 +207019,19 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] }, { + "type": "object", "properties": { "templated": { "type": "boolean", @@ -177385,7 +207045,7 @@ ] } ], - "description": "Templated link for filtering." + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" } }, "additionalProperties": { @@ -177435,14 +207095,91 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } } } } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } + } ] }, - "SSH_Key_Service_API_SortedCollection": { + "Tag_API_SortedCollection": { "allOf": [ { "allOf": [ @@ -177500,6 +207237,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -177553,6 +207299,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -177647,9 +207402,19 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] }, { + "type": "object", "properties": { "templated": { "type": "boolean", @@ -177663,7 +207428,7 @@ ] } ], - "description": "Templated link for sorting." + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" } }, "additionalProperties": { @@ -177713,58 +207478,220 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } } } } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" + }, + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + } ] }, - "SSH_Key_Service_API_SshKey": { + "Tag_API_Error": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + "Tag_API_UnauthorizedError": { "allOf": [ { "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, "required": [ - "id", - "label", - "public_key", - "fingerprint", - "created_at", - "user_id" - ], - "description": "Details an SSH key.", + "error", + "message" + ] + }, + { + "type": "object", "properties": { - "id": { + "error": { "type": "string", - "description": "The unique identifier of the SSH key.", - "pattern": "^[a-zA-Z0-9-]+$" + "const": "unauthorized" }, - "label": { + "message": { "type": "string", - "description": "The human-readable key label." + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "Tag_API_ForbiddenError": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "public_key": { + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { "type": "string", - "description": "The public key.", - "minLength": 64 + "const": "forbidden" }, - "fingerprint": { + "message": { "type": "string", - "description": "The public key fingerprint.", - "pattern": "^[A-Za-z0-9:+/=.-]+$" + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "Tag_API_NotFoundError": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "created_at": { + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { "type": "string", - "format": "date-time", - "description": "The key creation date." + "const": "not_found" }, - "user_id": { + "message": { "type": "string", - "description": "The unique identifier of the user who owns this SSH key.", - "pattern": "^[a-zA-Z0-9-]+$" + "example": "The resource you are trying to access does not exist, or you do not have access to it." } - } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "Tag_API_InternalServerError": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "Tag_API_Message": { + "allOf": [ { "type": "object", "properties": { @@ -177819,6 +207746,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -177872,6 +207808,15 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, @@ -177884,1139 +207829,639 @@ "required": [ "_links" ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] } ] }, - "SSH_Key_Service_API_SshKeys": { + "Tag_API_ValidationError": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } + }, + "required": [ + "error", + "message" + ] + }, + "Tag_API_InvalidOperationError": { "allOf": [ { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] + "type": "object", + "properties": { + "error": { + "type": "string" }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] + "message": { + "type": "string" } + }, + "required": [ + "error", + "message" ] }, { - "allOf": [ + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] + }, + "Codebase_Service_API_Codebase": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique identifier for the codebase" + }, + "label": { + "type": "string", + "description": "Human-readable label for the codebase" + }, + "region": { + "type": "string", + "description": "AWS region of the codebase" + }, + "vcs_url": { + "type": "string", + "format": "uri", + "description": "VCS repository URL" + }, + "repository_id": { + "type": "string", + "description": "VCS repository identifier" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Creation timestamp" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "Last update timestamp" + }, + "description": { + "type": "string", + "description": "Description of the codebase" + }, + "flags": { + "type": "object", + "properties": { + "is_active": { + "type": "boolean", + "description": "Whether the codebase is active" + }, + "is_meo": { + "type": "boolean", + "description": "Whether the codebase is MEO" + } + }, + "required": [ + "is_active", + "is_meo" + ], + "description": "Feature flags for the codebase" + }, + "hash": { + "type": "string", + "description": "Codebase hash" + }, + "applications_total": { + "type": "integer", + "description": "Total number of applications linked to this codebase" + } + }, + "required": [ + "id", + "label", + "region", + "vcs_url", + "repository_id", + "created_at", + "updated_at", + "flags", + "hash", + "applications_total" + ] + }, + "Codebase_Service_API_CodebaseReference": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique identifier for the reference" + }, + "name": { + "type": "string", + "description": "Name of the git reference" + }, + "type": { + "type": "string", + "enum": [ + "branch", + "tag" + ], + "description": "Type of the git reference" + } + }, + "required": [ + "id", + "name", + "type" + ] + }, + "Codebase_Service_API_DomainPattern": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z0-9-]+$", + "description": "Unique identifier for the domain pattern." + }, + "pattern": { + "type": "string", + "maxLength": 455, + "pattern": "^(?=.*\\[site-name\\])(?=.*\\[environment-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", + "description": "The domain pattern string, optionally followed by a single path segment (e.g. [site-name].[environment-name].acme.com/app). Both [site-name] and [environment-name] tokens are mandatory at codebase level. Domain rules (enforced in service layer): ≤ 200 chars excluding token placeholders, at least 2 components (must contain .), no IP addresses, no forbidden suffixes (acquia-sites.com, hosting.acquia.com), no wildcards, no leading/trailing dot or hyphen, no consecutive dots, no query string or fragment. Path rules: optional, max 255 chars, must match ^/[A-Za-z0-9._-]+$, max 1 segment. DNS label limit: 63 chars after token substitution ([site-name] ≤ 14 chars, [environment-name] ≤ 10 chars). One pattern per codebase.\n", + "example": "[site-name].[environment-name].acme.com" + } + }, + "required": [ + "id", + "pattern" + ] + }, + "Codebase_Service_API_HalLink": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - } + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "Codebase_Service_API_HalItem": { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + { + "format": "uri-template" } - }, - "required": [ - "_links" - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + "Codebase_Service_API_HalCollection": { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "_links": { + "self": { "type": "object", + "description": "HAL link object", "properties": { - "prev": { - "description": "Link to the previous page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - }, - "next": { - "description": "Link to the next page (templated)", - "type": "object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - }, - "offset": { - "allOf": [ + "href": { + "type": "string", + "anyOf": [ { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] + "format": "uri" }, { - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] + "format": "uri-template" } ], - "description": "Templated link for offset" + "description": "The target URI of the link (can be a URI or URI template)" }, - "limit": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - }, - { - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for limit" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" }, - "required": [ - "href" - ] - } - }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { - "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "total", - "limit", - "offset" + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } }, "required": [ - "count", - "total", - "pagination" - ] - } - ] - }, - { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - } + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] + { + "format": "uri-template" } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - "required": [ - "_links" - ] + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" }, - "required": [ - "_embedded" - ] - } - ] + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - { + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { "type": "object", + "description": "Embedded resources for the collection", "properties": { - "_links": { - "type": "object", - "properties": { - "filter": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - }, - { - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for filtering." - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" } } - } + }, + "required": [ + "items" + ] } + }, + "required": [ + "_embedded" ] - }, + } + ] + }, + "Codebase_Service_API_PaginatedCollection": { + "allOf": [ { "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, { "type": "object", "properties": { "_links": { "type": "object", + "description": "HAL links for the resource", "properties": { - "sort": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" + { + "format": "uri-template" } - }, - "required": [ - "href" - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - { - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } + }, + "required": [ + "href" ], - "description": "Templated link for sorting." + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } }, + "required": [ + "self" + ], "additionalProperties": { "type": "object", "description": "HAL link object", @@ -179064,227 +208509,121 @@ }, "required": [ "href" - ] - } - } - } - } - ] - }, - { - "type": "object", - "description": "A collection of SSH keys.", - "properties": { - "_embedded": { - "type": "object", - "description": "A collection of SSH keys matching the request parameters.", - "properties": { - "items": { - "type": "array", - "items": { - "allOf": [ + ], + "examples": [ { - "type": "object", - "required": [ - "id", - "label", - "public_key", - "fingerprint", - "created_at", - "user_id" - ], - "description": "Details an SSH key.", - "properties": { - "id": { - "type": "string", - "description": "The unique identifier of the SSH key.", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "label": { - "type": "string", - "description": "The human-readable key label." - }, - "public_key": { - "type": "string", - "description": "The public key.", - "minLength": 64 - }, - "fingerprint": { - "type": "string", - "description": "The public key fingerprint.", - "pattern": "^[A-Za-z0-9:+/=.-]+$" - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "The key creation date." - }, - "user_id": { - "type": "string", - "description": "The unique identifier of the user who owns this SSH key.", - "pattern": "^[a-zA-Z0-9-]+$" - } - } + "href": "https://api.acquia.com/v3/resources/1" }, { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } ] } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, "required": [ - "items" + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" ] } - }, - "required": [ - "_embedded" ] - } - ] - }, - "SSH_Key_Service_API_Message": { - "allOf": [ - { - "type": "object", - "required": [ - "message" - ], - "properties": { - "message": { - "type": "string", - "description": "The human-friendly confirmation of the operation." - } - } }, { "type": "object", "properties": { "_links": { "type": "object", - "description": "HAL links for the resource", "properties": { - "self": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", "type": "object", - "description": "HAL link object", "properties": { "href": { "type": "string", @@ -179329,12 +208668,668 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] + } + }, + "required": [ + "count", + "total", + "pagination" + ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + } + ] + }, + "Codebase_Service_API_FilteredCollection": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" ] } }, - "required": [ - "self" - ], + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, "additionalProperties": { "type": "object", "description": "HAL link object", @@ -179382,77 +209377,143 @@ }, "required": [ "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true } }, - "required": [ - "_links" - ] + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } } ] }, - "SSH_Key_Service_API_ValidationError": { + "Codebase_Service_API_ValidationError": { "type": "object", - "required": [ - "error", - "message" - ], - "description": "A validation error.", "properties": { "error": { - "type": "string", - "description": "The error summary." + "type": "string" }, "message": { "type": "object", - "description": "The validation error message keyed by its field or group name.", "additionalProperties": { "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." } } - } - }, - "SSH_Key_Service_API_Error": { - "type": "object", + }, "required": [ "error", "message" - ], + ] + }, + "Codebase_Service_API_Error": { + "type": "object", "properties": { "error": { - "type": "string", - "description": "The error summary." + "type": "string" }, "message": { - "type": "string", - "description": "The long description for the returned error." + "type": "string" } - } + }, + "required": [ + "error", + "message" + ] }, - "SSH_Key_Service_API_UnauthorizedError": { + "Codebase_Service_API_UnauthorizedError": { "allOf": [ { "type": "object", - "required": [ - "error", - "message" - ], "properties": { "error": { - "type": "string", - "description": "The error summary." + "type": "string" }, "message": { - "type": "string", - "description": "The long description for the returned error." + "type": "string" } - } + }, + "required": [ + "error", + "message" + ] }, { "type": "object", @@ -179473,24 +209534,22 @@ } ] }, - "SSH_Key_Service_API_ForbiddenError": { + "Codebase_Service_API_ForbiddenError": { "allOf": [ { "type": "object", - "required": [ - "error", - "message" - ], "properties": { "error": { - "type": "string", - "description": "The error summary." + "type": "string" }, "message": { - "type": "string", - "description": "The long description for the returned error." + "type": "string" } - } + }, + "required": [ + "error", + "message" + ] }, { "type": "object", @@ -179511,35 +209570,35 @@ } ] }, - "SSH_Key_Service_API_NotFoundError": { + "Codebase_Service_API_InternalServerError": { "allOf": [ { "type": "object", - "required": [ - "error", - "message" - ], "properties": { "error": { - "type": "string", - "description": "The error summary." + "type": "string" }, "message": { - "type": "string", - "description": "The long description for the returned error." + "type": "string" } - } + }, + "required": [ + "error", + "message" + ] }, { "type": "object", "properties": { "error": { "type": "string", - "const": "not_found" + "const": "system" }, "message": { "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." } }, "required": [ @@ -179549,35 +209608,33 @@ } ] }, - "SSH_Key_Service_API_InvalidOperationError": { + "Codebase_Service_API_NotFoundError": { "allOf": [ { "type": "object", - "required": [ - "error", - "message" - ], "properties": { "error": { - "type": "string", - "description": "The error summary." + "type": "string" }, "message": { - "type": "string", - "description": "The long description for the returned error." + "type": "string" } - } + }, + "required": [ + "error", + "message" + ] }, { "type": "object", "properties": { "error": { "type": "string", - "const": "conflict" + "const": "not_found" }, "message": { "type": "string", - "example": "The requested operation is invalid or cannot be completed." + "example": "The resource you are trying to access does not exist, or you do not have access to it." } }, "required": [ @@ -179587,494 +209644,729 @@ } ] }, - "SSH_Key_Service_API_InternalServerError": { + "Codebase_Service_API_Message": { "allOf": [ { "type": "object", - "required": [ - "error", - "message" - ], "properties": { - "error": { - "type": "string", - "description": "The error summary." + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } }, - "message": { - "type": "string", - "description": "The long description for the returned error." + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } - } + }, + "required": [ + "_links" + ] }, { "type": "object", "properties": { - "error": { - "type": "string", - "const": "system" - }, "message": { "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + "description": "The message content" } }, "required": [ - "error", "message" ] } ] }, - "Federated_Authentication_API_IdentityProvider": { - "type": "object", - "properties": { - "identity_provider_id": { - "type": "string", - "description": "Unique identifier for the identity provider." - }, - "label": { - "type": "string", - "description": "The name of the Identity Provider." - }, - "subscription_id": { - "type": "string", - "description": "Unique identifier for the subscription that the Identity Provider belongs to." - }, - "idp_entity_id": { - "type": "string", - "format": "uri", - "description": "The Identity Provider Entity ID." - }, - "sp_entity_id": { - "type": "string", - "format": "uri", - "description": "The Service Provider Entity ID." - }, - "sso_url": { - "type": "string", - "format": "uri", - "description": "The Single Sign-On URL for the Identity Provider." - }, - "certificate": { - "type": "string", - "description": "The X.509 certificate used for SAML authentication." - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "Timestamp when the Identity Provider was created." - } - }, - "required": [ - "identity_provider_id", - "label", - "subscription_id", - "idp_entity_id", - "sp_entity_id", - "sso_url", - "certificate", - "created_at" - ] - }, - "Federated_Authentication_API_SsoDomain": { - "type": "object", - "properties": { - "domain_id": { - "type": "string", - "description": "Unique identifier for the domain." - }, - "domain": { - "type": "string", - "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z]{2,})+$", - "description": "The domain name (e.g., \"acme.com\")." - }, - "subscription_id": { - "type": "string", - "description": "Unique identifier for the subscription that the domain belongs to." - }, - "health": { + "Codebase_Service_API_InvalidOperationError": { + "allOf": [ + { "type": "object", - "description": "The overall verification health of the domain. Uses the same code semantics as the platform email domain-verification system: `200` verified, `202` verification pending or in progress, `404` DNS record not found or could not be validated.", "properties": { - "code": { - "type": "string", - "enum": [ - "200", - "202", - "404" - ], - "description": "Machine-readable verification status code. `200` — verified. `202` — verification pending or in progress; retry after propagation. `404` — DNS TXT record not found or does not match expected value." - }, - "summary": { - "type": "string", - "description": "Short human-readable label for the verification state (e.g., \"Verified\", \"Verification pending\", \"Missing DNS record\")." + "error": { + "type": "string" }, - "details": { - "type": "string", - "description": "Actionable explanation of the current state. For `404`, describes what was checked and what the customer should do next." + "message": { + "type": "string" } }, "required": [ - "code", - "summary", - "details" + "error", + "message" ] }, - "verification_record": { + { "type": "object", - "description": "DNS TXT record the customer must publish to verify domain ownership.", "properties": { - "type": { - "type": "string", - "const": "TXT", - "description": "DNS record type." - }, - "host": { + "error": { "type": "string", - "description": "DNS record host name." + "const": "conflict" }, - "value": { + "message": { "type": "string", - "description": "Expected DNS record value." - }, - "health": { - "type": "object", - "description": "Verification health specific to this DNS record. Anchors the failure reason to the exact record the customer needs to fix, matching the per-record health pattern used in platform email domain verification.", - "properties": { - "code": { - "type": "string", - "enum": [ - "200", - "202", - "404" - ], - "description": "`200` — record found and value matches. `202` — check in progress. `404` — record not found or value does not match." - }, - "summary": { - "type": "string", - "description": "Short human-readable label for this record's verification state." - }, - "details": { - "type": "string", - "description": "Actionable explanation; for `404`, states what was checked and what to fix." - } - }, - "required": [ - "code", - "summary", - "details" - ] + "example": "The requested operation is invalid or cannot be completed." } }, "required": [ - "type", - "host", - "value", - "health" + "error", + "message" ] - }, - "verified_at": { - "type": "string", - "format": "date-time", - "description": "Timestamp when the domain was successfully verified. Present only when `health.code` is `200`." } - }, - "required": [ - "domain_id", - "domain", - "subscription_id", - "health", - "verification_record" ] }, - "Federated_Authentication_API_SsoPolicy": { - "type": "object", - "description": "SSO policy that enforces an Identity Provider for specific domains.", - "properties": { - "status": { - "type": "string", - "enum": [ - "enabled", - "disabled" - ], - "default": "disabled", - "description": "The status of the SSO policy. When enabled, the policy enforces SSO for the specified domains. Defaults to disabled on creation." - }, - "_embedded": { - "type": "object", - "description": "Embedded resources for the SSO policy.", - "properties": { - "domains": { - "type": "array", - "description": "The SSO domains enforced by this policy, each with a self link back to the authoritative SsoDomain resource.", - "items": { - "allOf": [ - { + "Codebase_Service_API_SortedCollection": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { "type": "object", + "description": "HAL link object", "properties": { - "domain_id": { + "href": { "type": "string", - "description": "Unique identifier for the domain." + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - "domain": { + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { "type": "string", - "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z]{2,})+$", - "description": "The domain name (e.g., \"acme.com\")." + "description": "Hint about the media type expected when dereferencing the target resource" }, - "subscription_id": { + "deprecation": { "type": "string", - "description": "Unique identifier for the subscription that the domain belongs to." + "description": "A URL to a resource that provides deprecation information" }, - "health": { - "type": "object", - "description": "The overall verification health of the domain. Uses the same code semantics as the platform email domain-verification system: `200` verified, `202` verification pending or in progress, `404` DNS record not found or could not be validated.", - "properties": { - "code": { - "type": "string", - "enum": [ - "200", - "202", - "404" - ], - "description": "Machine-readable verification status code. `200` — verified. `202` — verification pending or in progress; retry after propagation. `404` — DNS TXT record not found or does not match expected value." - }, - "summary": { - "type": "string", - "description": "Short human-readable label for the verification state (e.g., \"Verified\", \"Verification pending\", \"Missing DNS record\")." - }, - "details": { - "type": "string", - "description": "Actionable explanation of the current state. For `404`, describes what was checked and what the customer should do next." - } - }, - "required": [ - "code", - "summary", - "details" - ] + "name": { + "type": "string", + "description": "A secondary key for selecting links" }, - "verification_record": { - "type": "object", - "description": "DNS TXT record the customer must publish to verify domain ownership.", - "properties": { - "type": { - "type": "string", - "const": "TXT", - "description": "DNS record type." - }, - "host": { - "type": "string", - "description": "DNS record host name." - }, - "value": { - "type": "string", - "description": "Expected DNS record value." - }, - "health": { - "type": "object", - "description": "Verification health specific to this DNS record. Anchors the failure reason to the exact record the customer needs to fix, matching the per-record health pattern used in platform email domain verification.", - "properties": { - "code": { - "type": "string", - "enum": [ - "200", - "202", - "404" - ], - "description": "`200` — record found and value matches. `202` — check in progress. `404` — record not found or value does not match." - }, - "summary": { - "type": "string", - "description": "Short human-readable label for this record's verification state." - }, - "details": { - "type": "string", - "description": "Actionable explanation; for `404`, states what was checked and what to fix." - } - }, - "required": [ - "code", - "summary", - "details" - ] - } - }, - "required": [ - "type", - "host", - "value", - "health" - ] + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" }, - "verified_at": { + "title": { "type": "string", - "format": "date-time", - "description": "Timestamp when the domain was successfully verified. Present only when `health.code` is `200`." + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, "required": [ - "domain_id", - "domain", - "subscription_id", - "health", - "verification_record" + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "sort": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ { - "href": "https://api.acquia.com/v3/resources/1" + "format": "uri" }, { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true + "format": "uri-template" } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true ] } }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} + "required": [ + "templated" + ] + } + ], + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" } - }, - "required": [ - "_links" - ] + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } ] } } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" + }, + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", + "templated": true + } }, - "required": [ - "domains" + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + } + ] + }, + "Source_Platform_API_SourceSite": { + "type": "object", + "description": "A Source CMS site resource", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the Source site", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "f47ac10b-58cc-4372-a567-0e02b2c3d479" + }, + "label": { + "type": "string", + "description": "The human-readable label of the site. Must contain only lowercase letters, numbers, hyphens, and spaces.", + "minLength": 4, + "maxLength": 21, + "pattern": "^[a-z0-9]([a-z0-9- ]*[a-z0-9])?$", + "example": "my-source-site" + }, + "subscription_id": { + "type": "string", + "description": "The unique identifier of the subscription this site belongs to", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "status": { + "type": "string", + "description": "The current provisioning status of the site", + "enum": [ + "provisioning", + "ready", + "failed" + ], + "example": "ready" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 datetime when the site was created", + "example": "2026-08-18T10:30:00Z" + } + }, + "required": [ + "id", + "label", + "subscription_id", + "status", + "created_at" + ] + }, + "Source_Platform_API_SourceSiteConfig": { + "type": "object", + "properties": { + "configuration": { + "type": "string", + "description": "The site's configuration as a single YAML document, keyed by config collection,\nthen config name. The default collection is the empty string; other collections\nare named after their language (for example `language.nl`).\n\nNothing bounds how large this is: a site's configuration is as big as it is. The\nwrite caps what it accepts at 1 MiB, so a site whose configuration exceeds that\ncan be read but not written back — a limit of the service, tracked as DXBE-97.\n\nThe document carries the UUID Source CMS holds for the site, in its\n`system.site` object. That UUID marks where the configuration came from, and an\nimport refuses a document whose UUID does not match the target site. It is not\nthe same identifier as `sourceSiteId`.\n", + "example": "'':\n system.site:\n name: 'My site'\n uuid: 7c1f0a94-5d3b-4e18-9a62-0b8d4c5e6f70\n node.type.article:\n name: Article\nlanguage.nl:\n node.type.article:\n name: Artikel\n" + } + }, + "required": [ + "configuration" + ] + }, + "Source_Platform_API_SourceSiteConfigImport": { + "type": "object", + "description": "A configuration import of a Source CMS site. At most one import runs per site at a\ntime, so the one worth reading is the site's latest: the last one started.\n", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of this import, for logs and for support to trace it by.\nA caller cannot use it to confirm that the import it is reading is the one it\nstarted, because nothing hands the identifier back when an import is started.\n", + "pattern": "^[a-zA-Z0-9-]+$", + "example": "d81f5c27-3a4b-4e69-8f10-2c7b9e5a1d34" + }, + "source": { + "type": "string", + "description": "Where the import read its configuration from — the same value the write that\nstarted it asked for.\n\n- `request` — the document sent in that write.\n- `github` — the site's connected GitHub repository, read by the site itself.\n", + "enum": [ + "request", + "github" + ], + "example": "request" + }, + "status": { + "type": "string", + "description": "Where the import got to.\n\n- `running` — accepted and not finished. It says nothing about the outcome: an import that has only just started can still end as any of the three below.\n- `succeeded` — the configuration was applied.\n- `refused` — nothing was applied, because the configuration was rejected. `violations` says what was wrong.\n- `failed` — the import began and could not finish; the site was returned to the state it held beforehand.\n", + "enum": [ + "running", + "succeeded", + "refused", + "failed" + ], + "example": "refused" + }, + "started_at": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 datetime when the import was accepted", + "example": "2026-09-09T10:30:00Z" + }, + "finished_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "ISO 8601 datetime when the import reached its final status, or null while it is running", + "example": "2026-09-09T10:32:41Z" + }, + "violations": { + "type": "array", + "description": "Why a refused import was refused. Every violation the site found is listed, not\nonly the first, and one configuration object may appear more than once when it\nbroke more than one rule. Absent unless the status is `refused`.\n", + "items": { + "type": "object", + "properties": { + "collection": { + "type": "string", + "description": "Which configuration the rejected object belongs to:\n`language.` for a translation override, absent for the\nsite's own configuration. An object and its translations are separate\nobjects, and each can be rejected on its own.\n", + "example": "language.es" + }, + "config": { + "type": [ + "string", + "null" + ], + "description": "The configuration object that was rejected. Null for the one violation\nthat is about the document as a whole rather than one object: a site\nUUID that does not match the target.\n", + "example": "node.type.article" + }, + "path": { + "type": "string", + "description": "Which property within the rejected object failed, as a dotted path.\nThe empty string when the violation is about the whole object rather\nthan one property within it. Absent only when `config` is null, which\nhas no object to point into.\n", + "example": "name" + }, + "code": { + "type": "string", + "description": "Names the rule that rejected it, so a caller can recognise a kind of\nfailure without reading the message. Each code is stable once it\nappears, but the set is not closed: the site adds one whenever it adds\na validation rule, and it is not enumerated here for that reason. Treat\nan unrecognised code as opaque and fall back to the message.\n", + "example": "config_schema" + }, + "message": { + "type": "string", + "description": "Plain-language reason, naming what would have gone wrong had the import been applied." + } + }, + "required": [ + "config", + "code", + "message" + ] + }, + "example": [ + { + "config": "node.type.article", + "path": "", + "code": "delete_has_content", + "message": "Deleting this node type would delete 42 nodes. Delete the content first." + }, + { + "collection": "language.es", + "config": "node.type.article", + "path": "name", + "code": "config_schema", + "message": "The Spanish translation override sets 'name' to a list, but it expects a string." + }, + { + "config": "user.role.administrator", + "path": "", + "code": "system_role", + "message": "System roles cannot be changed by a configuration sync." + }, + { + "config": null, + "code": "site_uuid_mismatch", + "message": "This configuration was exported from a different site." + } ] } }, "required": [ + "id", + "source", "status", - "_embedded" + "started_at" ] }, - "Federated_Authentication_API_HalLink": { + "Source_Platform_API_HalLink": { "type": "object", "description": "HAL link object", "properties": { @@ -180132,7 +210424,7 @@ } ] }, - "Federated_Authentication_API_HalItem": { + "Source_Platform_API_HalItem": { "type": "object", "properties": { "_links": { @@ -180270,7 +210562,7 @@ "_links" ] }, - "Federated_Authentication_API_HalCollection": { + "Source_Platform_API_HalCollection": { "allOf": [ { "type": "object", @@ -180436,7 +210728,7 @@ } ] }, - "Federated_Authentication_API_PaginatedCollection": { + "Source_Platform_API_PaginatedCollection": { "allOf": [ { "allOf": [ @@ -180765,924 +211057,45 @@ "description": "A URI that hints about the profile of the target resource" }, "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for offset" - }, - "limit": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for limit" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "count": { - "type": "integer", - "description": "The number of items in the current page" - }, - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "pagination": { - "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "The total number of items available" - }, - "limit": { - "type": "integer", - "description": "The maximum number of items to retrieve in a single page" - }, - "offset": { - "type": "integer", - "description": "The starting position of the items to retrieve" - } - }, - "required": [ - "total", - "limit", - "offset" - ] - } - }, - "required": [ - "count", - "total", - "pagination" - ] - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 2 - }, - "_embedded": { - "items": [ - { - "id": "456e4567-e89b-11d3-a789-426614174000", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "789e4567-e89b-11d3-a789-426614174000", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" - }, - "next": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 0 - }, - "_embedded": { - "items": [ - { - "id": "111e4567-e89b-11d3-a789-426614174000", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "222e4567-e89b-11d3-a789-426614174000", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" - }, - "prev": { - "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" - }, - "offset": { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - }, - "limit": { - "href": "https://api.acquia.com/v3/resources{?limit}", - "templated": true - } - }, - "count": 2, - "total": 6, - "pagination": { - "total": 6, - "limit": 2, - "offset": 4 - }, - "_embedded": { - "items": [ - { - "id": "999e4567-e89b-11d3-a789-426614174000", - "name": "Resource 5", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" - } - } - }, - { - "id": "aaaee567-e89b-11d3-a789-426614174000", - "name": "Resource 6", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" - } - } - } - ] - } - } - ] - }, - "Federated_Authentication_API_FilteredCollection": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } - } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "filter": { - "allOf": [ - { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - }, - { - "type": "object", - "properties": { - "templated": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "templated" - ] - } - ], - "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" - } - }, - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - } - } - } - ], - "examples": [ - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "1", - "name": "Resource 1", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/1" - } - } - }, - { - "id": "2", - "name": "Resource 2", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/2" - } - } - } - ] - } - }, - { - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" - }, - "filter": { - "href": "https://api.acquia.com/v3/resources{?filter}", - "templated": true - } - }, - "_embedded": { - "items": [ - { - "id": "3", - "name": "Resource 3", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/3" - } - } - }, - { - "id": "4", - "name": "Resource 4", - "_links": { - "self": { - "href": "https://api.acquia.com/v3/resources/4" - } - } - } - ] - } - } - ] - }, - "Federated_Authentication_API_SortedCollection": { - "allOf": [ - { - "allOf": [ - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "description": "HAL links for the resource", - "properties": { - "self": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" - }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } - }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" - }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "required": [ - "self" - ], - "additionalProperties": { - "type": "object", - "description": "HAL link object", - "properties": { - "href": { - "type": "string", - "anyOf": [ - { - "format": "uri" - }, - { - "format": "uri-template" - } - ], - "description": "The target URI of the link (can be a URI or URI template)" - }, - "templated": { - "type": "boolean", - "description": "Whether the link is a URI template" - }, - "type": { - "type": "string", - "description": "Hint about the media type expected when dereferencing the target resource" - }, - "deprecation": { - "type": "string", - "description": "A URL to a resource that provides deprecation information" - }, - "name": { - "type": "string", - "description": "A secondary key for selecting links" - }, - "profile": { - "type": "string", - "description": "A URI that hints about the profile of the target resource" - }, - "title": { - "type": "string", - "description": "A human-readable identifier for the link" + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - "hreflang": { - "type": "string", - "description": "The language of the target resource" - } + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] }, - "required": [ - "href" - ], - "examples": [ - { - "href": "https://api.acquia.com/v3/resources/1" + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } }, - { - "href": "https://api.acquia.com/v3/resources{?offset}", - "templated": true - } - ] - } - }, - "_embedded": { - "type": "object", - "description": "Embedded resources (optional)", - "additionalProperties": {} - } - }, - "required": [ - "_links" - ] - }, - { - "type": "object", - "properties": { - "_embedded": { - "type": "object", - "description": "Embedded resources for the collection", - "properties": { - "items": { - "type": "array", - "description": "The array of resources in the collection", - "items": { - "type": "object" - } + "required": [ + "templated" + ] } - }, - "required": [ - "items" - ] - } - }, - "required": [ - "_embedded" - ] - } - ] - }, - { - "type": "object", - "properties": { - "_links": { - "type": "object", - "properties": { - "sort": { + ], + "description": "Templated link for offset" + }, + "limit": { "allOf": [ { "type": "object", @@ -181757,7 +211170,7 @@ ] } ], - "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" + "description": "Templated link for limit" } }, "additionalProperties": { @@ -181818,38 +211231,184 @@ } ] } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] } - } + }, + "required": [ + "count", + "total", + "pagination" + ] } ], "examples": [ { "_links": { "self": { - "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" }, - "sort": { - "href": "https://api.acquia.com/v3/resources{?sort}", + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", "templated": true } }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, "_embedded": { "items": [ { - "id": "1", + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", "name": "Resource 1", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/1" + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" } } }, { - "id": "2", + "id": "222e4567-e89b-11d3-a789-426614174000", "name": "Resource 2", "_links": { "self": { - "href": "https://api.acquia.com/v3/resources/2" + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" } } } @@ -181858,7 +211417,7 @@ } ] }, - "Federated_Authentication_API_ValidationError": { + "Source_Platform_API_ValidationError": { "type": "object", "properties": { "error": { @@ -181880,7 +211439,7 @@ "message" ] }, - "Federated_Authentication_API_Error": { + "Source_Platform_API_Error": { "type": "object", "properties": { "error": { @@ -181895,7 +211454,7 @@ "message" ] }, - "Federated_Authentication_API_UnauthorizedError": { + "Source_Platform_API_UnauthorizedError": { "allOf": [ { "type": "object", @@ -181931,7 +211490,7 @@ } ] }, - "Federated_Authentication_API_ForbiddenError": { + "Source_Platform_API_ForbiddenError": { "allOf": [ { "type": "object", @@ -181967,7 +211526,7 @@ } ] }, - "Federated_Authentication_API_NotFoundError": { + "Source_Platform_API_InternalServerError": { "allOf": [ { "type": "object", @@ -181989,11 +211548,13 @@ "properties": { "error": { "type": "string", - "const": "not_found" + "const": "system" }, "message": { "type": "string", - "example": "The resource you are trying to access does not exist, or you do not have access to it." + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." } }, "required": [ @@ -182003,7 +211564,7 @@ } ] }, - "Federated_Authentication_API_InternalServerError": { + "Source_Platform_API_NotFoundError": { "allOf": [ { "type": "object", @@ -182025,13 +211586,11 @@ "properties": { "error": { "type": "string", - "const": "system" + "const": "not_found" }, "message": { "type": "string", - "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", - "description": "Standard error message with variable request ID.", - "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + "example": "The resource you are trying to access does not exist, or you do not have access to it." } }, "required": [ @@ -182041,7 +211600,7 @@ } ] }, - "Federated_Authentication_API_Message": { + "Source_Platform_API_Message": { "allOf": [ { "type": "object", @@ -182195,7 +211754,7 @@ } ] }, - "Federated_Authentication_API_InvalidOperationError": { + "Source_Platform_API_InvalidOperationError": { "allOf": [ { "type": "object", @@ -182206,2646 +211765,4681 @@ "message": { "type": "string" } - }, - "required": [ - "error", - "message" - ] - }, - { - "type": "object", - "properties": { - "error": { - "type": "string", - "const": "conflict" - }, - "message": { - "type": "string", - "example": "The requested operation is invalid or cannot be completed." - } - }, - "required": [ - "error", - "message" - ] - } - ] - } - }, - "securitySchemes": { - "API_Specs_API_BearerAuth": { - "type": "http", - "scheme": "bearer", - "bearerFormat": "JWT", - "description": "Bearer token authentication using a JWT." - }, - "Site_Service_API_BearerAuth": { - "type": "http", - "scheme": "bearer", - "bearerFormat": "JWT", - "description": "Use a valid JWT Bearer token in the Authorization header. Example: 'Bearer {token}'" - }, - "CDN_API_BearerAuth": { - "type": "http", - "scheme": "bearer", - "bearerFormat": "JWT", - "description": "Use a valid JWT Bearer token in the Authorization header. Example: 'Bearer {token}'" - }, - "Environment_Service_API_BearerAuth": { - "type": "http", - "scheme": "bearer", - "bearerFormat": "JWT", - "description": "Use a valid JWT Bearer token in the Authorization header. Example: 'Bearer {token}'" - }, - "Tag_API_BearerAuth": { - "type": "http", - "scheme": "bearer", - "bearerFormat": "JWT", - "description": "Use a valid JWT Bearer token in the Authorization header. Example: 'Bearer {token}'" - }, - "Codebase_Service_API_BearerAuth": { - "type": "http", - "scheme": "bearer", - "bearerFormat": "JWT", - "description": "Use a valid JWT Bearer token in the Authorization header. Example: 'Bearer {token}'" - }, - "Failover_Service_API_BearerAuth": { - "type": "http", - "scheme": "bearer", - "bearerFormat": "JWT", - "description": "Use a valid JWT Bearer token in the Authorization header. Example: 'Bearer {token}'" - }, - "New_Relic_Provisioning_API_BearerAuth": { - "type": "http", - "scheme": "bearer", - "bearerFormat": "JWT", - "description": "Use a valid JWT Bearer token in the Authorization header. Example: 'Bearer {token}'" - }, - "SSH_Key_Service_API_BearerAuth": { - "type": "http", - "scheme": "bearer", - "bearerFormat": "JWT", - "description": "Use a valid JWT Bearer token in the Authorization header. Example: 'Bearer {token}'" - }, - "Federated_Authentication_API_BearerAuth": { - "type": "http", - "scheme": "bearer", - "bearerFormat": "JWT", - "description": "Use a valid JWT Bearer token in the Authorization header. Example: 'Bearer {token}'" - } - }, - "parameters": { - "Site_Service_API_siteId": { - "name": "siteId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "12345678-1234-1234-1234-123456789012" - }, - "description": "Unique identifier for the site" - }, - "Site_Service_API_codebaseId": { - "name": "codebaseId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "550e8400-e29b-41d4-a716-446655441212" - }, - "description": "Unique identifier for the codebase" - }, - "Site_Service_API_subscriptionId": { - "name": "subscriptionId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "550e8300-e29b-41d4-a716-446655441212" - }, - "description": "Unique identifier for the subscription" - }, - "Site_Service_API_environmentId": { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "0ebce493-9d09-479d-a9a8-138a206fa687" - }, - "description": "Unique identifier for the environment" - }, - "Site_Service_API_Offset": { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "example": 20 - } - }, - "Site_Service_API_Limit": { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "minimum": 1, - "example": 10 - } - }, - "Site_Service_API_Filter": { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" - }, - "example": "status=active;type=standard" - }, - "Site_Service_API_Sort": { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" - }, - "example": "name,-created_at" - }, - "Site_Service_API_SiteId": { - "name": "siteId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "12345678-1234-1234-1234-123456789012" - }, - "description": "Unique identifier for the site" - }, - "Site_Service_API_CodebaseId": { - "name": "codebaseId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "550e8400-e29b-41d4-a716-446655441212" - }, - "description": "Unique identifier for the codebase" - }, - "Site_Service_API_SubscriptionId": { - "name": "subscriptionId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "550e8300-e29b-41d4-a716-446655441212" - }, - "description": "Unique identifier for the subscription" - }, - "Site_Service_API_EnvironmentId": { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "0ebce493-9d09-479d-a9a8-138a206fa687" - }, - "description": "Unique identifier for the environment" - }, - "CDN_API_SubscriptionUuid": { - "name": "subscriptionUuid", - "in": "path", - "required": true, - "description": "The unique identifier of the subscription.", - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - } - }, - "CDN_API_DomainName": { - "name": "domainName", - "in": "path", - "required": true, - "description": "The fully qualified domain name.", - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]?(\\.[a-zA-Z]{2,})+$" - } - }, - "CDN_API_EnvironmentId": { - "name": "environmentId", - "in": "path", - "required": true, - "description": "The unique identifier of the environment.", - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - } - }, - "CDN_API_RuleSetId": { - "name": "ruleSetId", - "in": "path", - "required": true, - "description": "The unique identifier of the security rule set.", - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - } - }, - "CDN_API_IpRuleId": { - "name": "ipRuleId", - "in": "path", - "required": true, - "description": "The unique identifier of the IP rule.", - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - } - }, - "CDN_API_CustomRuleId": { - "name": "customRuleId", - "in": "path", - "required": true, - "description": "The unique identifier of the custom security rule.", - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - } - }, - "CDN_API_RateLimitingRuleId": { - "name": "rateLimitingRuleId", - "in": "path", - "required": true, - "description": "The unique identifier of the rate limiting rule.", - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - } - }, - "CDN_API_Offset": { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "example": 20 - } - }, - "CDN_API_Limit": { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "minimum": 1, - "example": 10 - } - }, - "CDN_API_Filter": { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" - }, - "example": "status=active;type=standard" - }, - "CDN_API_Sort": { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" - }, - "example": "name,-created_at" - }, - "Environment_Service_API_environmentId": { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." - }, - "Environment_Service_API_siteId": { - "name": "siteId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the site." - }, - "Environment_Service_API_deploymentId": { - "name": "deploymentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the deployment." - }, - "Environment_Service_API_codebaseId": { - "name": "codebaseId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Codebase identifier" - }, - "Environment_Service_API_domainName": { - "name": "domainName", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$" - }, - "description": "The fully-qualified domain name (e.g., www.example.com)." - }, - "Environment_Service_API_backupId": { - "name": "backupId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Database backup identifier" - }, - "Environment_Service_API_privateNetworkId": { - "name": "privateNetworkId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Private network identifier" - }, - "Environment_Service_API_patternId": { - "name": "patternId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the domain pattern." - }, - "Environment_Service_API_CodebaseId": { - "name": "codebaseId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Codebase identifier" - }, - "Environment_Service_API_Offset": { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "example": 20 - } - }, - "Environment_Service_API_Limit": { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "minimum": 1, - "example": 10 - } - }, - "Environment_Service_API_Filter": { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" - }, - "example": "status=active;type=standard" - }, - "Environment_Service_API_EnvironmentId": { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." - }, - "Environment_Service_API_SiteId": { - "name": "siteId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the site." - }, - "Environment_Service_API_PrivateNetworkId": { - "name": "privateNetworkId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Private network identifier" - }, - "Environment_Service_API_Sort": { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" - }, - "example": "name,-created_at" - }, - "Environment_Service_API_DomainName": { - "name": "domainName", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*$" - }, - "description": "The fully-qualified domain name (e.g., www.example.com)." - }, - "Environment_Service_API_BackupId": { - "name": "backupId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Database backup identifier" - }, - "Environment_Service_API_DeploymentId": { - "name": "deploymentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the deployment." - }, - "Environment_Service_API_PatternId": { - "name": "patternId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the domain pattern." - }, - "Tag_API_tagName": { - "name": "tagName", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the tag." - }, - "Tag_API_Offset": { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "example": 20 - } - }, - "Tag_API_Limit": { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "minimum": 1, - "example": 10 - } - }, - "Tag_API_Filter": { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" - }, - "example": "status=active;type=standard" - }, - "Tag_API_Sort": { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" - }, - "example": "name,-created_at" - }, - "Tag_API_TagName": { - "name": "tagName", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the tag." - }, - "Codebase_Service_API_codebaseId": { - "name": "codebaseId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the codebase." - }, - "Codebase_Service_API_patternId": { - "name": "patternId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the domain pattern." - }, - "Codebase_Service_API_referenceName": { - "name": "referenceName", - "in": "path", - "required": true, - "description": "Name of the git reference (branch or tag). Slashes must be URL-encoded as `%2F` in the path (e.g., `feature%2Fbranch-name`).", - "schema": { - "type": "string", - "pattern": "^[^/]+$" - } - }, - "Codebase_Service_API_subscriptionId": { - "name": "subscriptionId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the subscription" - }, - "Codebase_Service_API_Offset": { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "example": 20 - } - }, - "Codebase_Service_API_Limit": { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "minimum": 1, - "example": 10 - } - }, - "Codebase_Service_API_Filter": { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" - }, - "example": "status=active;type=standard" - }, - "Codebase_Service_API_CodebaseId": { - "name": "codebaseId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the codebase." - }, - "Codebase_Service_API_ReferenceName": { - "name": "referenceName", - "in": "path", - "required": true, - "description": "Name of the git reference (branch or tag). Slashes must be URL-encoded as `%2F` in the path (e.g., `feature%2Fbranch-name`).", - "schema": { - "type": "string", - "pattern": "^[^/]+$" - } - }, - "Codebase_Service_API_Sort": { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" - }, - "example": "name,-created_at" - }, - "Codebase_Service_API_PatternId": { - "name": "patternId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the domain pattern." - }, - "Codebase_Service_API_SubscriptionId": { - "name": "subscriptionId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the subscription" - }, - "Failover_Service_API_environmentId": { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the environment." - }, - "Failover_Service_API_failoverGroupId": { - "name": "failoverGroupId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the failover group." + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" + }, + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } + }, + "required": [ + "error", + "message" + ] + } + ] }, - "Failover_Service_API_Offset": { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "example": 20 + "API_Specs_API_Error": { + "type": "object", + "required": [ + "error", + "message" + ], + "properties": { + "error": { + "type": "string", + "description": "The error summary." + }, + "message": { + "type": "string", + "description": "The long description for the returned error." + } } }, - "Failover_Service_API_Limit": { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "minimum": 1, - "example": 10 - } + "API_Specs_API_InternalServerError": { + "allOf": [ + { + "type": "object", + "required": [ + "error", + "message" + ], + "properties": { + "error": { + "type": "string", + "description": "The error summary." + }, + "message": { + "type": "string", + "description": "The long description for the returned error." + } + } + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] }, - "Failover_Service_API_Filter": { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + "Failover_Service_API_FailoverGroup": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique identifier for the failover group.", + "example": "b2c3d4e5-f6a7-8901-bcde-f12345678901" + }, + "name": { + "type": "string", + "description": "The name of the failover group.", + "example": "Primary Failover Group" + }, + "status": { + "type": "string", + "enum": [ + "creating", + "normal", + "failed-over", + "failing-over", + "error", + "deleting", + "deleted" + ], + "description": "The current status of the failover group.", + "example": "normal" + }, + "pairs": { + "type": "array", + "description": "The list of failover pairs belonging to this failover group.", + "items": { + "type": "object", + "properties": { + "service_name": { + "type": "string", + "description": "The name of the service for this failover pair.", + "example": "my-application-service" + }, + "primary_id": { + "type": "string", + "description": "The ID of the primary resource in the failover pair.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "failover_id": { + "type": "string", + "description": "The UUID of the failover resource in the failover pair.", + "example": "f1e2d3c4-b5a6-7890-fedc-ba9876543210" + } + }, + "required": [ + "service_name", + "primary_id", + "failover_id" + ] + } + } }, - "example": "status=active;type=standard" + "required": [ + "id", + "name", + "status", + "pairs" + ] }, - "Failover_Service_API_FailoverGroupId": { - "name": "failoverGroupId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" + "Failover_Service_API_FailoverPair": { + "type": "object", + "properties": { + "service_name": { + "type": "string", + "description": "The name of the service for this failover pair.", + "example": "my-application-service" + }, + "primary_id": { + "type": "string", + "description": "The ID of the primary resource in the failover pair.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "failover_id": { + "type": "string", + "description": "The UUID of the failover resource in the failover pair.", + "example": "f1e2d3c4-b5a6-7890-fedc-ba9876543210" + } }, - "description": "Unique identifier for the failover group." + "required": [ + "service_name", + "primary_id", + "failover_id" + ] }, - "Failover_Service_API_EnvironmentId": { - "name": "environmentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" + "Failover_Service_API_MultiRegionFailoverStatus": { + "type": "object", + "properties": { + "is_enabled": { + "type": "boolean", + "description": "Whether multi-region failover is enabled for the environment." + }, + "failover_group_id": { + "type": "string", + "description": "The identifier of the failover group associated with the environment." + }, + "is_traffic_failed_over": { + "type": "boolean", + "description": "Whether traffic has been failed over to the secondary region." + } }, - "description": "Unique identifier for the environment." - }, - "New_Relic_Provisioning_API_Offset": { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "example": 20 - } - }, - "New_Relic_Provisioning_API_Limit": { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "minimum": 1, - "example": 10 - } + "required": [ + "is_enabled" + ] }, - "New_Relic_Provisioning_API_Filter": { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" + "Failover_Service_API_HalLink": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - "example": "status=active;type=standard" + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] }, - "SSH_Key_Service_API_SshKeyId": { - "name": "sshKeyId", - "in": "path", - "description": "The SSH key's unique identifier.", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" + "Failover_Service_API_HalItem": { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } }, - "example": "981b7910-2fe9-11e9-b210-d663bd873d93" - }, - "SSH_Key_Service_API_Offset": { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "example": 20 - } - }, - "SSH_Key_Service_API_Limit": { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "minimum": 1, - "example": 10 - } + "required": [ + "_links" + ] }, - "SSH_Key_Service_API_Filter": { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals (default if no operator specified)\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `label=primary` - Filter by label equals primary\n- `fingerprint=@SHA256` - Filter by fingerprint containing \"SHA256\"\n- `label=primary;fingerprint=@SHA256` - label is primary AND fingerprint contains SHA256\n- `label=primary,label=backup` - label is primary OR backup\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" - }, - "example": "label=primary;fingerprint=@SHA256" + "Failover_Service_API_HalCollection": { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] }, - "SSH_Key_Service_API_Sort": { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" - }, - "example": "name,-created_at" + "Failover_Service_API_PaginatedCollection": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] + } + }, + "required": [ + "count", + "total", + "pagination" + ] + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } + } + ] + } + } + ] }, - "Federated_Authentication_API_SubscriptionId": { - "name": "subscriptionId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" - }, - "description": "Unique identifier for the subscription." + "Failover_Service_API_FilteredCollection": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + } + } + } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } + } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" + }, + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true + } + }, + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } + } + ] + } + } + ] }, - "Federated_Authentication_API_SsoDomainId": { - "name": "domainId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" + "Failover_Service_API_ValidationError": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." + } + } }, - "description": "Unique identifier for the domain." + "required": [ + "error", + "message" + ] }, - "Federated_Authentication_API_IdentityProviderId": { - "name": "identityProviderId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$" + "Failover_Service_API_Error": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } }, - "description": "Unique identifier for the identity provider." + "required": [ + "error", + "message" + ] }, - "Federated_Authentication_API_Offset": { - "name": "offset", - "in": "query", - "description": "The number of items to skip before starting to collect the result set.", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "example": 20 - } + "Failover_Service_API_UnauthorizedError": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" + }, + "message": { + "type": "string", + "const": "You do not have permission to access this resource." + } + }, + "required": [ + "error", + "message" + ] + } + ] }, - "Federated_Authentication_API_Limit": { - "name": "limit", - "in": "query", - "description": "The maximum number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "minimum": 1, - "example": 10 - } + "Failover_Service_API_ForbiddenError": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" + }, + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } + }, + "required": [ + "error", + "message" + ] + } + ] }, - "Federated_Authentication_API_Sort": { - "name": "sort", - "in": "query", - "description": "Sort the result set by one or more fields.\n**Format:** `field1,field2,-field3`\n**Sort order:**\n- No prefix - Ascending order (default)\n- `-` prefix - Descending order\n**Multiple fields:**\n- Fields are processed in the order specified\n- First field has highest priority\n- Use comma to separate multiple fields\n**Examples:**\n- `name` - Sort by name in ascending order\n- `-created_at` - Sort by created_at in descending order\n- `name,-created_at` - Sort by name ascending, then created_at descending\n- `status,name,-updated_at` - Sort by status ascending, then name ascending, then updated_at descending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^(-?[a-zA-Z0-9_]+)(,-?[a-zA-Z0-9_]+)*$" - }, - "example": "name,-created_at" + "Failover_Service_API_InternalServerError": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" + }, + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } + }, + "required": [ + "error", + "message" + ] + } + ] }, - "Federated_Authentication_API_Filter": { - "name": "filter", - "in": "query", - "description": "Filter the result set using field-based criteria.\n**Format:** `field=value` or `fieldvalue`\n**Logical operators:**\n- `,` (comma) - OR logic between filters\n- `;` (semicolon) - AND logic between filters\n- **Note:** Cannot mix OR and AND operators in the same query\n**Comparison operators:**\n- `=` - Equals. This is the default comparison operator; `:` is accepted as a backward-compatible alias for `=`\n- `!=` - Does not equal\n- `>` - Greater than\n- `<` - Less than\n- `>=` - Greater than or equal to\n- `<=` - Less than or equal to\n- `=@` - Contains substring\n- `!@` - Does not contain substring\n**Wildcards:**\n- `*` - Wildcard character for pattern matching\n**Examples:**\n- `status=active` - Filter by status equals active\n- `name=@prod` - Filter by name containing \"prod\"\n- `status=active;type=standard` - Status is active AND type is standard\n- `status=active,status=pending` - Status is active OR pending\n", - "required": false, - "schema": { - "type": "string", - "pattern": "^[a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+([;,][a-zA-Z0-9_]+(=@|!@|!=|>=|<=|[:=]|>|<)[a-zA-Z0-9_\\-*.]+)*$" - }, - "example": "status=active;type=standard" - } - }, - "requestBodies": { - "Site_Service_API_DuplicateSiteRequest": { - "description": "Site duplication request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "environment_mapping": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+:[a-zA-Z0-9-]+$", - "description": "Environment mapping in the format 'sourceEnvId:targetEnvId'" + "Failover_Service_API_Message": { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } }, - "description": "Array of environment mappings. You must provide exactly one environment mapping. Each entry maps a source environment ID to a target environment ID, separated by a colon.\n", - "minItems": 1, - "maxItems": 1, - "example": [ - "0ebce493-9d09-479d-a9a8-138a206fa687:a1b2c3d4-e5f6-7890-abcd-ef1234567890" + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] - }, - "site_name": { - "type": "string", - "description": "Machine name for the duplicated site. Must start with a lowercase letter and contain only lowercase letters and numbers. Maximum 14 characters.\n", - "minLength": 1, - "maxLength": 14, - "pattern": "^[a-z][a-z0-9]*$", - "example": "dupsite" - }, - "site_label": { - "type": "string", - "description": "Human-readable label for the duplicated site. Must only contain letters, numbers, and spaces. Maximum 50 characters.\n", - "minLength": 1, - "maxLength": 50, - "example": "Duplicated Site" - }, - "site_id": { - "type": "string", - "format": "uuid", - "description": "An optional explicit UUID for the new duplicated site. A UUID is generated automatically if omitted.", - "example": "f1a2b3c4-d5e6-7890-abcd-ef1234567890" - }, - "hook_argument": { - "type": "string", - "description": "Optional hook argument to pass to the duplication process.", - "example": "--verbose" } }, - "required": [ - "environment_mapping", - "site_name", - "site_label" - ], - "additionalProperties": false + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } }, - "examples": { - "duplicate_basic": { - "summary": "Duplicate a site with required fields", - "description": "Duplicates a site with a single environment mapping", - "value": { - "environment_mapping": [ - "0ebce493-9d09-479d-a9a8-138a206fa687:a1b2c3d4-e5f6-7890-abcd-ef1234567890" - ], - "site_name": "dupsite", - "site_label": "Duplicated Site" - } - }, - "duplicate_with_options": { - "summary": "Duplicate a site with all options", - "description": "Duplicates a site specifying a custom site ID and hook argument", - "value": { - "environment_mapping": [ - "0ebce493-9d09-479d-a9a8-138a206fa687:a1b2c3d4-e5f6-7890-abcd-ef1234567890" - ], - "site_name": "duphook", - "site_label": "Dup With Hook", - "site_id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890", - "hook_argument": "my-hook-arg" - } + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" } - } + }, + "required": [ + "message" + ] } - } + ] }, - "Site_Service_API_CreateSiteRequest": { - "description": "Site creation request body", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The machine name of the site. Must start with a lowercase letter and contain only lowercase letters and numbers.", - "minLength": 1, - "maxLength": 14, - "pattern": "^[a-z][a-z0-9]*$", - "example": "mysite" - }, - "label": { - "type": "string", - "description": "The human-readable label for the site.", - "minLength": 1, - "maxLength": 50, - "example": "My Site" - }, - "codebase_id": { - "type": "string", - "description": "The unique identifier of the codebase to associate with this site.", - "pattern": "^[a-zA-Z0-9-]+$", - "example": "a9b8c7d6-e5f4-3210-abcd-ef9876543210" - }, - "site_id": { - "type": "string", - "format": "uuid", - "description": "An optional explicit UUID for the new site. A UUID is generated automatically if omitted.", - "example": "0ebce493-9d09-479d-a9a8-138a206fa687" - }, - "description": { - "type": "string", - "description": "An optional description for the site.", - "maxLength": 512, - "example": "A production site for the marketing team." - } + "Failover_Service_API_InvalidOperationError": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "required": [ - "name", - "label", - "codebase_id" - ], - "additionalProperties": false + "message": { + "type": "string" + } }, - "examples": { - "create_site_full": { - "summary": "Create a new site with all fields", - "value": { - "name": "mysite", - "label": "My Site", - "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210", - "site_id": "0ebce493-9d09-479d-a9a8-138a206fa687", - "description": "This is a description of my site." - } + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" }, - "create_site_minimal": { - "summary": "Create a new site with required fields only", - "value": { - "name": "newsitename", - "label": "New Site Label", - "codebase_id": "a9b8c7d6-e5f4-3210-abcd-ef9876543210" - } + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." } - } + }, + "required": [ + "error", + "message" + ] } - } + ] }, - "Site_Service_API_UpdateSiteRequest": { - "description": "Site update request body", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "label": { - "type": "string", - "description": "The new human-readable label for the site.", - "minLength": 1, - "maxLength": 50, - "example": "My Updated Site" - }, - "description": { - "type": "string", - "description": "The new description for the site.", - "maxLength": 512, - "example": "Updated description for this site." - } + "Failover_Service_API_NotFoundError": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "additionalProperties": false, - "minProperties": 1 + "message": { + "type": "string" + } }, - "examples": { - "update_label": { - "summary": "Update site label", - "value": { - "label": "My Updated Site" - } - }, - "update_description": { - "summary": "Update site description", - "value": { - "description": "Updated description for this site." - } + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" }, - "update_both": { - "summary": "Update label and description", - "value": { - "label": "My Updated Site", - "description": "Updated description for this site." - } + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." } - } + }, + "required": [ + "error", + "message" + ] } - } + ] }, - "CDN_API_ProvisionCdnForDomainRequest": { - "description": "Domain CDN provisioning request body", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "environment_id": { - "type": "string", - "pattern": "^[a-zA-Z0-9-]+$", - "description": "The environment identifier that the domain will be associated with for purging purposes." - } - }, - "additionalProperties": false, - "required": [ - "environment_id" - ], - "minProperties": 1 - }, - "example": { - "environment_id": "0c3f0f5f-5727-4838-9459-2d90ee1cf7c1" - } + "Federated_Authentication_API_IdentityProvider": { + "type": "object", + "properties": { + "identity_provider_id": { + "type": "string", + "description": "Unique identifier for the identity provider." + }, + "label": { + "type": "string", + "description": "The name of the Identity Provider." + }, + "subscription_id": { + "type": "string", + "description": "Unique identifier for the subscription that the Identity Provider belongs to." + }, + "idp_entity_id": { + "type": "string", + "format": "uri", + "description": "The Identity Provider Entity ID." + }, + "sp_entity_id": { + "type": "string", + "format": "uri", + "description": "The Service Provider Entity ID." + }, + "sso_url": { + "type": "string", + "format": "uri", + "description": "The Single Sign-On URL for the Identity Provider." + }, + "certificate": { + "type": "string", + "description": "The X.509 certificate used for SAML authentication." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Timestamp when the Identity Provider was created." } - } + }, + "required": [ + "identity_provider_id", + "label", + "subscription_id", + "idp_entity_id", + "sp_entity_id", + "sso_url", + "certificate", + "created_at" + ] }, - "CDN_API_CreatePurgeRequest": { - "description": "Purge request body", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "resource_type": { - "type": "string", - "description": "The type of resource to purge.", - "enum": [ - "tags", - "urls", - "domains", - "everything" - ] - }, - "values": { - "type": "array", - "description": "List of values to purge based on the resource type.\nRequired when `resource_type` is not `everything`.\n", - "items": { - "type": "string" - }, - "minItems": 1 - } + "Federated_Authentication_API_SsoDomain": { + "type": "object", + "properties": { + "domain_id": { + "type": "string", + "description": "Unique identifier for the domain." + }, + "domain": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z]{2,})+$", + "description": "The domain name (e.g., \"acme.com\")." + }, + "subscription_id": { + "type": "string", + "description": "Unique identifier for the subscription that the domain belongs to." + }, + "health": { + "type": "object", + "description": "The overall verification health of the domain. Uses the same code semantics as the platform email domain-verification system: `200` verified, `202` verification pending or in progress, `404` DNS record not found or could not be validated.", + "properties": { + "code": { + "type": "string", + "enum": [ + "200", + "202", + "404" + ], + "description": "Machine-readable verification status code. `200` — verified. `202` — verification pending or in progress; retry after propagation. `404` — DNS TXT record not found or does not match expected value." }, - "additionalProperties": false, - "required": [ - "resource_type" - ], - "minProperties": 1 + "summary": { + "type": "string", + "description": "Short human-readable label for the verification state (e.g., \"Verified\", \"Verification pending\", \"Missing DNS record\")." + }, + "details": { + "type": "string", + "description": "Actionable explanation of the current state. For `404`, describes what was checked and what the customer should do next." + } }, - "examples": { - "purge_urls": { - "summary": "Purge specific URLs", - "value": { - "resource_type": "urls", - "values": [ - "https://example.com/page1", - "https://example.com/page2" - ] - } + "required": [ + "code", + "summary", + "details" + ] + }, + "verification_record": { + "type": "object", + "description": "DNS TXT record the customer must publish to verify domain ownership.", + "properties": { + "type": { + "type": "string", + "const": "TXT", + "description": "DNS record type." }, - "purge_tags": { - "summary": "Purge by cache tags", - "value": { - "resource_type": "tags", - "values": [ - "product-123", - "category-456" - ] - } + "host": { + "type": "string", + "description": "DNS record host name." }, - "purge_domains": { - "summary": "Purge entire domains", - "value": { - "resource_type": "domains", - "values": [ - "example.com", - "test.example.org" - ] - } + "value": { + "type": "string", + "description": "Expected DNS record value." }, - "purge_everything": { - "summary": "Purge everything", - "value": { - "resource_type": "everything" - } + "health": { + "type": "object", + "description": "Verification health specific to this DNS record. Anchors the failure reason to the exact record the customer needs to fix, matching the per-record health pattern used in platform email domain verification.", + "properties": { + "code": { + "type": "string", + "enum": [ + "200", + "202", + "404" + ], + "description": "`200` — record found and value matches. `202` — check in progress. `404` — record not found or value does not match." + }, + "summary": { + "type": "string", + "description": "Short human-readable label for this record's verification state." + }, + "details": { + "type": "string", + "description": "Actionable explanation; for `404`, states what was checked and what to fix." + } + }, + "required": [ + "code", + "summary", + "details" + ] } - } + }, + "required": [ + "type", + "host", + "value", + "health" + ] + }, + "verified_at": { + "type": "string", + "format": "date-time", + "description": "Timestamp when the domain was successfully verified. Present only when `health.code` is `200`." } - } + }, + "required": [ + "domain_id", + "domain", + "subscription_id", + "health", + "verification_record" + ] }, - "CDN_API_UpdateSecurityRuleSetRequest": { - "description": "Security ruleset update request body", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "is_enabled": { - "type": "boolean", - "description": "Indicates whether the security ruleset should be enabled." - } - }, - "additionalProperties": false, - "required": [ - "is_enabled" - ], - "minProperties": 1 - }, - "examples": { - "enable": { - "summary": "Enables a security ruleset", - "value": { - "is_enabled": true + "Federated_Authentication_API_SsoPolicy": { + "type": "object", + "description": "SSO policy that enforces an Identity Provider for specific domains.", + "properties": { + "status": { + "type": "string", + "enum": [ + "enabled", + "disabled" + ], + "default": "disabled", + "description": "The status of the SSO policy. When enabled, the policy enforces SSO for the specified domains. Defaults to disabled on creation." + }, + "_embedded": { + "type": "object", + "description": "Embedded resources for the SSO policy.", + "properties": { + "domains": { + "type": "array", + "description": "The SSO domains enforced by this policy, each with a self link back to the authoritative SsoDomain resource.", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "domain_id": { + "type": "string", + "description": "Unique identifier for the domain." + }, + "domain": { + "type": "string", + "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z]{2,})+$", + "description": "The domain name (e.g., \"acme.com\")." + }, + "subscription_id": { + "type": "string", + "description": "Unique identifier for the subscription that the domain belongs to." + }, + "health": { + "type": "object", + "description": "The overall verification health of the domain. Uses the same code semantics as the platform email domain-verification system: `200` verified, `202` verification pending or in progress, `404` DNS record not found or could not be validated.", + "properties": { + "code": { + "type": "string", + "enum": [ + "200", + "202", + "404" + ], + "description": "Machine-readable verification status code. `200` — verified. `202` — verification pending or in progress; retry after propagation. `404` — DNS TXT record not found or does not match expected value." + }, + "summary": { + "type": "string", + "description": "Short human-readable label for the verification state (e.g., \"Verified\", \"Verification pending\", \"Missing DNS record\")." + }, + "details": { + "type": "string", + "description": "Actionable explanation of the current state. For `404`, describes what was checked and what the customer should do next." + } + }, + "required": [ + "code", + "summary", + "details" + ] + }, + "verification_record": { + "type": "object", + "description": "DNS TXT record the customer must publish to verify domain ownership.", + "properties": { + "type": { + "type": "string", + "const": "TXT", + "description": "DNS record type." + }, + "host": { + "type": "string", + "description": "DNS record host name." + }, + "value": { + "type": "string", + "description": "Expected DNS record value." + }, + "health": { + "type": "object", + "description": "Verification health specific to this DNS record. Anchors the failure reason to the exact record the customer needs to fix, matching the per-record health pattern used in platform email domain verification.", + "properties": { + "code": { + "type": "string", + "enum": [ + "200", + "202", + "404" + ], + "description": "`200` — record found and value matches. `202` — check in progress. `404` — record not found or value does not match." + }, + "summary": { + "type": "string", + "description": "Short human-readable label for this record's verification state." + }, + "details": { + "type": "string", + "description": "Actionable explanation; for `404`, states what was checked and what to fix." + } + }, + "required": [ + "code", + "summary", + "details" + ] + } + }, + "required": [ + "type", + "host", + "value", + "health" + ] + }, + "verified_at": { + "type": "string", + "format": "date-time", + "description": "Timestamp when the domain was successfully verified. Present only when `health.code` is `200`." + } + }, + "required": [ + "domain_id", + "domain", + "subscription_id", + "health", + "verification_record" + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } + }, + "required": [ + "_links" + ] + } + ] } } - } + }, + "required": [ + "domains" + ] } - } + }, + "required": [ + "status", + "_embedded" + ] }, - "CDN_API_CreateIpRuleRequest": { - "description": "IP rule create request body", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "ips": { - "type": "array", - "description": "The IPs or CIDR blocks to include in the rule.", - "items": { - "type": "string", - "description": "An IP address or CIDR block." - } - }, - "action": { - "type": "string", - "enum": [ - "block", - "allow" - ], - "description": "The action applied when the rule matches." - }, - "display_name": { - "type": "string", - "description": "The display name of the IP rule." - }, - "description": { - "type": "string", - "description": "The description of the IP rule." - } + "Federated_Authentication_API_HalLink": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" }, - "additionalProperties": false, - "required": [ - "ips", - "action", - "display_name" - ] - }, - "examples": { - "create": { - "summary": "Creates an IP rule", - "value": { - "ips": [ - "192.0.2.10", - "198.51.100.0/24" - ], - "action": "block", - "display_name": "Block office IPs", - "description": "Blocks office IP ranges." - } + { + "format": "uri-template" } - } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } - } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] }, - "CDN_API_UpdateIpRuleRequest": { - "description": "IP rule update request body", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "display_name": { - "type": "string", - "description": "The display name of the IP rule." - }, - "action": { - "type": "string", - "enum": [ - "block", - "allow" - ], - "description": "The action applied when the rule matches." - }, - "description": { - "type": "string", - "description": "The description of the IP rule." - }, - "ips": { - "type": "array", - "description": "The IPs or CIDR blocks associated with the rule.", - "items": { + "Federated_Authentication_API_HalItem": { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { "type": "string", - "description": "An IP address or CIDR block." + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - } - }, - "additionalProperties": false, - "minProperties": 1 - }, - "examples": { - "update": { - "summary": "Updates an IP rule", - "value": { - "display_name": "Allow support", - "action": "allow", - "ips": [ - "203.0.113.5" - ] - } + ] } - } - } - } - }, - "CDN_API_CreateCustomRuleRequest": { - "description": "Custom security rule create request body", - "required": true, - "content": { - "application/json": { - "schema": { + }, + "required": [ + "self" + ], + "additionalProperties": { "type": "object", + "description": "HAL link object", "properties": { - "display_name": { - "type": "string", - "description": "The display name of the custom security rule." - }, - "action": { + "href": { "type": "string", - "enum": [ - "block", - "allow", - "alert" + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } ], - "description": "The action applied when the rule matches." + "description": "The target URI of the link (can be a URI or URI template)" }, - "priority": { - "type": "integer", - "minimum": 1, - "description": "The priority order for the rule." + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" }, - "domains": { - "type": "array", - "description": "The domains the rule applies to.", - "items": { - "type": "string", - "description": "A domain name." - } + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" }, - "paths": { - "type": "array", - "description": "The paths the rule applies to.", - "items": { - "type": "string", - "description": "A path pattern." - } - } - }, - "additionalProperties": false, - "required": [ - "display_name", - "action", - "domains", - "paths" - ], - "minProperties": 1 - }, - "examples": { - "create": { - "summary": "Creates a custom security rule", - "value": { - "display_name": "Block bad bots", - "action": "block", - "priority": 1, - "domains": [ - "example.com" - ], - "paths": [ - "/api/*" - ] - } - } - } - } - } - }, - "CDN_API_CreateRateLimitingRuleRequest": { - "description": "Rate limiting rule create request body", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "display_name": { + "deprecation": { "type": "string", - "description": "The display name of the rate limiting rule." + "description": "A URL to a resource that provides deprecation information" }, - "action": { + "name": { "type": "string", - "enum": [ - "block", - "alert" - ], - "description": "The action applied when the rule matches." + "description": "A secondary key for selecting links" }, - "domains": { - "type": "array", - "description": "The domains the rule applies to.", - "items": { - "type": "string", - "description": "A domain name." - } + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" }, - "rate_limit_per_minute": { + "title": { "type": "string", - "enum": [ - "lenient", - "moderate", - "strict" - ], - "description": "The rate limit category applied to the rule." + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" } }, - "additionalProperties": false, "required": [ - "display_name", - "action", - "rate_limit_per_minute" + "href" ], - "minProperties": 1 - }, - "examples": { - "create": { - "summary": "Creates a rate limiting rule", - "value": { - "display_name": "Rate Rule 1", - "action": "alert", - "rate_limit_per_minute": "lenient", - "domains": [ - "example.com" - ] + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - } + ] } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } - } + }, + "required": [ + "_links" + ] }, - "CDN_API_UpdateRateLimitingRuleRequest": { - "description": "Rate limiting rule update request body", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "display_name": { - "type": "string", - "description": "The display name of the rate limiting rule." - }, - "action": { - "type": "string", - "enum": [ - "block", - "alert" - ], - "description": "The action applied when the rule matches." - }, - "domains": { - "type": "array", - "description": "The domains the rule applies to.", - "items": { - "type": "string", - "description": "A domain name." + "Federated_Authentication_API_HalCollection": { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } }, - "rate_limit_per_minute": { - "type": "string", - "enum": [ - "lenient", - "moderate", - "strict" + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" ], - "description": "The rate limit category applied to the rule." + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } }, - "additionalProperties": false, - "minProperties": 1 + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } }, - "examples": { - "update": { - "summary": "Updates a rate limiting rule", - "value": { - "display_name": "Rate Rule 2", - "action": "block", - "rate_limit_per_minute": "strict", - "domains": [ - "shop.example.com" - ] - } + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] } - } + }, + "required": [ + "_embedded" + ] } - } + ] }, - "CDN_API_UpdateCustomRuleRequest": { - "description": "Custom security rule update request body", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "display_name": { - "type": "string", - "description": "The display name of the custom security rule." - }, - "action": { - "type": "string", - "enum": [ - "block", - "allow", - "alert" - ], - "description": "The action applied when the rule matches." - }, - "priority": { - "type": "integer", - "minimum": 1, - "description": "The priority order for the rule." + "Federated_Authentication_API_PaginatedCollection": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } }, - "domains": { - "type": "array", - "description": "The domains the rule applies to.", - "items": { - "type": "string", - "description": "A domain name." + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] } }, - "paths": { - "type": "array", - "description": "The paths the rule applies to.", - "items": { - "type": "string", - "description": "A path pattern." + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "prev": { + "description": "Link to the previous page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "next": { + "description": "Link to the next page (templated)", + "type": "object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + "offset": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for offset" + }, + "limit": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for limit" } - } - }, - "additionalProperties": false, - "minProperties": 1 - }, - "examples": { - "update": { - "summary": "Updates a custom security rule", - "value": { - "display_name": "Alert login scans", - "action": "alert", - "priority": 2, - "domains": [ - "shop.example.com" + }, + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" ], - "paths": [ - "/login" + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } + }, + "count": { + "type": "integer", + "description": "The number of items in the current page" + }, + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of items available" + }, + "limit": { + "type": "integer", + "description": "The maximum number of items to retrieve in a single page" + }, + "offset": { + "type": "integer", + "description": "The starting position of the items to retrieve" + } + }, + "required": [ + "total", + "limit", + "offset" + ] } - } + }, + "required": [ + "count", + "total", + "pagination" + ] } - } - }, - "Environment_Service_API_StartDeploymentRequest": { - "description": "Deployment start request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "run_hooks": { - "type": "boolean", - "description": "Whether to run deployment hooks." - }, - "code_reference": { - "type": "string", - "description": "The code reference (branch or tag) to deploy." - }, - "hooks_argument": { - "type": "string", - "description": "Additional arguments passed to deployment hooks." - } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" }, - "required": [ - "run_hooks", - "code_reference" - ], - "additionalProperties": false, - "minProperties": 1 + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" + }, + "next": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } }, - "examples": { - "start_deployment": { - "summary": "Start a deployment", - "description": "Starts a deployment for the specified environment.", - "value": { - "run_hooks": true, - "code_reference": "release-2025-01-15", - "hooks_argument": "--migrate --clear-cache" + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 2 + }, + "_embedded": { + "items": [ + { + "id": "456e4567-e89b-11d3-a789-426614174000", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/456e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "789e4567-e89b-11d3-a789-426614174000", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/789e4567-e89b-11d3-a789-426614174000" + } + } } - } + ] } - } - } - }, - "Environment_Service_API_UpdateCodeDeployRequest": { - "description": "Code deploy concurrency update request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "concurrency": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "Maximum number of concurrent code deploys allowed for the environment." - } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=0&limit=2" }, - "required": [ - "concurrency" - ], - "additionalProperties": false, - "minProperties": 1 - }, - "examples": { - "update_concurrency": { - "summary": "Update code deploy concurrency", - "description": "Sets the maximum concurrent code deploys for the environment.", - "value": { - "concurrency": 10 - } + "next": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true } - } - } - } - }, - "Environment_Service_API_ReorderSiteInstancesRequest": { - "description": "Site instances reorder request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "site_instance_ids": { - "type": "array", - "description": "List of site instance IDs in the desired priority order.", - "items": { - "type": "string", - "description": "Site instance identifier in the format {siteId}.{environmentId} (dot-separated site and environment UUIDs)." + }, + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 0 + }, + "_embedded": { + "items": [ + { + "id": "111e4567-e89b-11d3-a789-426614174000", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/111e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "222e4567-e89b-11d3-a789-426614174000", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/222e4567-e89b-11d3-a789-426614174000" + } } } + ] + } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?offset=4&limit=2" }, - "required": [ - "site_instance_ids" - ], - "additionalProperties": false, - "minProperties": 1 + "prev": { + "href": "https://api.acquia.com/v3/resources?offset=2&limit=2" + }, + "offset": { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + }, + "limit": { + "href": "https://api.acquia.com/v3/resources{?limit}", + "templated": true + } }, - "examples": { - "reorder": { - "summary": "Reorder site instances", - "description": "Provides the desired order of site instance IDs for the environment.", - "value": { - "site_instance_ids": [ - "3e8ecbec-ea7c-4260-8414-ef2938c859bc.a0c9dff7-56b6-4c0d-bad0-0e6593f66cd3", - "b1d8e2f8-67c7-5d1e-cbe1-1f7604f77de4.c2e9f3a9-78d8-6e2f-dcf2-2a8715a88ef5", - "d3fa04ba-89e9-4f3a-edf3-3b9826b99fa6.e4ab15cb-90fa-4a4b-fea4-4c0937c00ab7" - ] + "count": 2, + "total": 6, + "pagination": { + "total": 6, + "limit": 2, + "offset": 4 + }, + "_embedded": { + "items": [ + { + "id": "999e4567-e89b-11d3-a789-426614174000", + "name": "Resource 5", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/999e4567-e89b-11d3-a789-426614174000" + } + } + }, + { + "id": "aaaee567-e89b-11d3-a789-426614174000", + "name": "Resource 6", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/aaaee567-e89b-11d3-a789-426614174000" + } + } } - } + ] } } - } + ] }, - "Environment_Service_API_UpdateEnvironmentRequest": { - "description": "Update environment request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "label": { - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Human-readable label for the environment." + "Federated_Authentication_API_FilteredCollection": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } }, - "description": { - "type": "string", - "minLength": 1, - "maxLength": 512, - "description": "Description for the environment." + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", "properties": { + "filter": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for filtering. The `filter` query parameter is a string to signify the fields to filter the result set by. If the filter includes logical filters this string will be delimited by a \",\" for a logical OR filter, or a \";\" for logical AND filters. Note: Only one type logical filter will be accepted. If the filter contains both OR and AND filters it will be rejected. (e.g. filter=field=value*;field2=value2* indicates that the result set will be filtered by \"field\" using the term \"value*\" AND \"field2\" using the term \"value2*\". Note that * is a wildcard character in this context). Allowed filter operators are: Equals: = (%3D), Does not equal: != (!%3D), Greater than: > (%3E), Less than: < (%3C), Greater than or equal to: >= (%3E%3D), Less than or equal to: <= (%3C%3D), Contains substring: =@ (%3D@), Does not contain substring: !@ (!@)" + } + }, + "additionalProperties": { "type": "object", - "description": "PHP and server configuration properties for the environment.", + "description": "HAL link object", "properties": { - "version": { + "href": { "type": "string", - "description": "PHP version (e.g. \"8.3\")." - }, - "apcu": { - "type": "integer", - "description": "APCu memory limit in MB." - }, - "max_execution_time": { - "type": "integer", - "description": "PHP max execution time in seconds." - }, - "memory_limit": { - "type": "integer", - "description": "PHP memory limit in MB." - }, - "opcache": { - "type": "integer", - "description": "OPcache memory limit in MB." - }, - "interned_strings_buffer": { - "type": "integer", - "description": "OPcache interned strings buffer in MB." + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" }, - "client_max_body_size": { - "type": "integer", - "description": "Nginx client_max_body_size in MB." + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" }, - "upload_max_filesize": { - "type": "integer", - "description": "PHP upload_max_filesize in MB." + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" }, - "max_post_size": { - "type": "integer", - "description": "PHP post_max_size in MB." + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" }, - "max_input_vars": { - "type": "integer", - "description": "PHP max_input_vars." + "name": { + "type": "string", + "description": "A secondary key for selecting links" }, - "memcached_limit": { - "type": "integer", - "description": "Memcached memory limit in MB." + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" }, - "operating_system": { + "title": { "type": "string", - "description": "Operating system (e.g. \"focal\")." + "description": "A human-readable identifier for the link" }, - "sendmail_path": { + "hreflang": { "type": "string", - "description": "Sendmail path configuration." + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true } - } - } - }, - "additionalProperties": false, - "minProperties": 1 - }, - "examples": { - "update_label": { - "summary": "Update environment label", - "value": { - "label": "Staging", - "description": "Staging environment" - } - }, - "update_properties": { - "summary": "Update PHP properties", - "value": { - "properties": { - "version": "8.3", - "memory_limit": 256 - } - } - } - } - } - } - }, - "Environment_Service_API_ClearCachesRequest": { - "description": "Clear caches request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "domains": { - "type": "array", - "description": "List of domain names to clear caches for.", - "minItems": 1, - "items": { - "type": "string", - "description": "A domain name." - } - } - }, - "required": [ - "domains" - ], - "additionalProperties": false - }, - "examples": { - "clear_caches": { - "summary": "Clear caches for specific domains", - "value": { - "domains": [ - "example.com", - "www.example.com" ] } } } } - } - }, - "Environment_Service_API_CreateSiteInstanceRequest": { - "description": "Create site instance request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "site_id": { - "type": "string", - "description": "The UUID of the site to associate with this environment." - }, - "source_environment_id": { - "type": "string", - "description": "The UUID of the environment to copy files and database from during creation." - }, - "source_site_id": { - "type": "string", - "description": "The UUID of the source site to copy files from during creation." - }, - "hook_arguments": { - "type": "string", - "description": "Additional arguments to pass to deployment hooks during creation." - } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=field=value*;field2=value2*" }, - "required": [ - "site_id" - ], - "additionalProperties": false - }, - "examples": { - "create": { - "summary": "Associate a site with an environment", - "value": { - "site_id": "3e8ecbec-ea7c-4260-8414-ef2938c859bc" - } + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true } - } - } - } - }, - "Environment_Service_API_CopySiteInstanceFilesRequest": { - "description": "Copy site instance files request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "source_environment_id": { - "type": "string", - "description": "The UUID of the environment to copy files from." - } - }, - "required": [ - "source_environment_id" - ], - "additionalProperties": false }, - "examples": { - "copy_files": { - "summary": "Copy files from another environment", - "value": { - "source_environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323" + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } } - } + ] } - } - } - }, - "Environment_Service_API_CopySiteInstanceDatabaseRequest": { - "description": "Copy site instance database request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "source_environment_id": { - "type": "string", - "description": "The UUID of the environment to copy the database from." - } + }, + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?filter=created_at%3E%3D2025-05-20T00%3A00%3A00Z,created_at%3C2025-05-21T00%3A00%3A00Z" }, - "required": [ - "source_environment_id" - ], - "additionalProperties": false - }, - "examples": { - "copy_database": { - "summary": "Copy database from another environment", - "value": { - "source_environment_id": "d3f7270e-c45f-4801-9308-5e8afe84a323" - } + "filter": { + "href": "https://api.acquia.com/v3/resources{?filter}", + "templated": true } - } - } - } - }, - "Environment_Service_API_AssociatePrivateNetworkRequest": { - "description": "Associate private network request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "private_network_id": { - "type": "string", - "description": "The identifier of the private network to associate with this environment." - } - }, - "required": [ - "private_network_id" - ], - "additionalProperties": false, - "minProperties": 1 }, - "examples": { - "associate": { - "summary": "Associate a private network", - "value": { - "private_network_id": "pn-a1b2c3d4-e5f6-7890-abcd-ef1234567890" + "_embedded": { + "items": [ + { + "id": "3", + "name": "Resource 3", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/3" + } + } + }, + { + "id": "4", + "name": "Resource 4", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/4" + } + } } - } + ] } } - } + ] }, - "Environment_Service_API_UpdateTrustedProxiesRequest": { - "description": "Update trusted proxies request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "cidrs_ipv4": { - "type": "array", - "description": "List of trusted IPv4 CIDR blocks.", - "items": { - "type": "string", - "description": "An IPv4 CIDR block (e.g. \"203.0.113.0/24\")." + "Federated_Authentication_API_SortedCollection": { + "allOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + } + }, + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} } }, - "cidrs_ipv6": { - "type": "array", - "description": "List of trusted IPv6 CIDR blocks.", - "items": { - "type": "string", - "description": "An IPv6 CIDR block (e.g. \"2001:db8::/32\")." + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "_embedded": { + "type": "object", + "description": "Embedded resources for the collection", + "properties": { + "items": { + "type": "array", + "description": "The array of resources in the collection", + "items": { + "type": "object" + } + } + }, + "required": [ + "items" + ] + } + }, + "required": [ + "_embedded" + ] + } + ] + }, + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "sort": { + "allOf": [ + { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] + }, + { + "type": "object", + "properties": { + "templated": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "templated" + ] + } + ], + "description": "Templated link for sorting. The `sort` query parameter is a comma-delimited string with fields that are used for sorting. The order of fields is significant. A leading \"-\" in the field name indicates the field should be sorted in descending order. (e.g. sort=field,-field2 indicates that the result set will be sorted by \"field\" in ascending order, then by \"field2\" in descending order.)" } }, - "associated_cdns": { - "type": "array", - "description": "List of CDN names to associate with this environment.", - "items": { - "type": "string", - "enum": [ - "akamai", - "cloudflare", - "fastly" - ] - } - } - }, - "additionalProperties": false, - "minProperties": 1 - }, - "examples": { - "update": { - "summary": "Update trusted proxy configuration", - "value": { - "cidrs_ipv4": [ - "203.0.113.0/24" + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" ], - "cidrs_ipv6": [], - "associated_cdns": [ - "cloudflare" + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } ] } } } } - } - }, - "Environment_Service_API_CreateDomainPatternRequest": { - "description": "Create domain pattern request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "pattern": { - "type": "string", - "maxLength": 455, - "pattern": "^(?=.*\\[site-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", - "description": "The domain pattern to apply to all associated sites in this environment, optionally followed by a single path segment. The [site-name] token is mandatory; [environment-name] is optional. Domain ≤ 200 chars excluding token placeholders; optional path max 255 chars matching ^/[A-Za-z0-9._-]+$. Additional semantic rules (no IPs, no forbidden suffixes, no wildcards, one pattern per environment) are enforced at the service layer.\n", - "example": "[site-name].acme.com" - } + ], + "examples": [ + { + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources?sort=name,-created_at" }, - "required": [ - "pattern" - ], - "additionalProperties": false - }, - "examples": { - "create_domain_pattern": { - "summary": "Create a domain pattern", - "value": { - "pattern": "[site-name].acme.com" - } + "sort": { + "href": "https://api.acquia.com/v3/resources{?sort}", + "templated": true } - } - } - } - }, - "Environment_Service_API_UpdateDomainPatternRequest": { - "description": "Update domain pattern request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "pattern": { - "type": "string", - "maxLength": 455, - "pattern": "^(?=.*\\[site-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", - "description": "The updated domain pattern to apply to all associated sites in this environment, optionally followed by a single path segment. The [site-name] token is mandatory. Domain ≤ 200 chars excluding token placeholders; optional path max 255 chars matching ^/[A-Za-z0-9._-]+$. Additional semantic rules (no IPs, no forbidden suffixes, no wildcards, one pattern per environment) are enforced at the service layer.\n" - } - }, - "required": [ - "pattern" - ], - "additionalProperties": false, - "minProperties": 1 }, - "examples": { - "update_domain_pattern": { - "summary": "Update a domain pattern", - "value": { - "pattern": "[site-name].staging.acme.com" + "_embedded": { + "items": [ + { + "id": "1", + "name": "Resource 1", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/1" + } + } + }, + { + "id": "2", + "name": "Resource 2", + "_links": { + "self": { + "href": "https://api.acquia.com/v3/resources/2" + } + } } - } + ] } } - } + ] }, - "Tag_API_SaveTagRequest": { - "description": "Tag create/update request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "color": { - "type": "string", - "pattern": "^#((?:[a-f0-9]{3}){1,2})$", - "description": "A color for the specified tag" - } - }, - "additionalProperties": false, - "minProperties": 1 + "Federated_Authentication_API_ValidationError": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "object", + "additionalProperties": { + "type": "string" }, - "examples": { - "save": { - "summary": "Saves a tag", - "description": "Saves a tag with specified color", - "value": { - "color": "#000000" - } - } + "example": { + "field_name": "This field is required.", + "another_field": "This field must be a valid format." } } - } + }, + "required": [ + "error", + "message" + ] }, - "Codebase_Service_API_CreateCodebaseRequest": { - "description": "Codebase creation request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "codebase_id": { - "type": "string", - "format": "uuid", - "description": "Client-supplied UUID for the new codebase" - }, - "label": { - "type": "string", - "description": "Human-readable label for the codebase" - }, - "region": { - "type": "string", - "description": "AWS region where the codebase will be created" - } - }, - "required": [ - "codebase_id", - "label", - "region" - ], - "additionalProperties": false - }, - "examples": { - "create": { - "summary": "Create a codebase", - "description": "Creates a new codebase for a subscription", - "value": { - "codebase_id": "a0c9dff7-56b6-4c0d-bad0-0e6593f66cd4", - "label": "my-codebase", - "region": "us-east-1" - } - } - } + "Federated_Authentication_API_Error": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "message": { + "type": "string" } - } + }, + "required": [ + "error", + "message" + ] }, - "Codebase_Service_API_CreateDomainPatternRequest": { - "description": "Create domain pattern request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "pattern": { - "type": "string", - "maxLength": 455, - "pattern": "^(?=.*\\[site-name\\])(?=.*\\[environment-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", - "description": "The domain pattern to apply to all associated sites in this codebase, optionally followed by a single path segment. Both [site-name] and [environment-name] tokens are mandatory. Domain ≤ 200 chars excluding token placeholders; optional path max 255 chars matching ^/[A-Za-z0-9._-]+$. Additional semantic rules (no IPs, no forbidden suffixes, no wildcards, one pattern per codebase) are enforced at the service layer.\n" - } + "Federated_Authentication_API_UnauthorizedError": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "required": [ - "pattern" - ], - "additionalProperties": false - }, - "examples": { - "create_domain_pattern": { - "summary": "Create a domain pattern", - "value": { - "pattern": "[site-name].[environment-name].acme.com" - } + "message": { + "type": "string" } - } - } - } - }, - "Codebase_Service_API_UpdateCodebaseRequest": { - "description": "Codebase update request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "label": { - "type": "string", - "description": "Human-readable label for the codebase" - }, - "description": { - "type": "string", - "description": "Description of the codebase" - } - }, - "minProperties": 1, - "additionalProperties": false }, - "examples": { - "update": { - "summary": "Update a codebase", - "description": "Updates an existing codebase's label and description", - "value": { - "label": "updated-codebase-label", - "description": "Updated codebase description" - } - } - } - } - } - }, - "Codebase_Service_API_UpdateDomainPatternRequest": { - "description": "Update domain pattern request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "pattern": { - "type": "string", - "maxLength": 455, - "pattern": "^(?=.*\\[site-name\\])(?=.*\\[environment-name\\])[\\[\\]a-zA-Z0-9.-]+(/[A-Za-z0-9._-]+)?$", - "description": "The updated domain pattern to apply to all associated sites in this codebase, optionally followed by a single path segment. Both [site-name] and [environment-name] tokens are mandatory. Domain ≤ 200 chars excluding token placeholders; optional path max 255 chars matching ^/[A-Za-z0-9._-]+$. Additional semantic rules (no IPs, no forbidden suffixes, no wildcards, one pattern per codebase) are enforced at the service layer.\n" - } + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "unauthorized" }, - "required": [ - "pattern" - ], - "additionalProperties": false, - "minProperties": 1 - }, - "examples": { - "update_domain_pattern": { - "summary": "Update a domain pattern", - "value": { - "pattern": "[site-name].[environment-name].acme.com" - } + "message": { + "type": "string", + "const": "You do not have permission to access this resource." } - } - } - } - }, - "Failover_Service_API_CreateFailoverGroupRequest": { - "description": "Create failover group request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name of the failover group.", - "example": "Primary Failover Group" - } - }, - "required": [ - "name" - ], - "additionalProperties": false }, - "examples": { - "create": { - "summary": "Creates a new failover group", - "description": "Creates a new failover group with the specified name", - "value": { - "name": "Primary Failover Group" - } - } - } + "required": [ + "error", + "message" + ] } - } + ] }, - "Failover_Service_API_SaveMultiRegionFailoverRequest": { - "description": "Multi-region failover enable request body", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "region": { - "type": "string", - "description": "The region to enable multi-region failover for.", - "example": "us-east-1" - } + "Federated_Authentication_API_ForbiddenError": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "required": [ - "region" - ], - "additionalProperties": false, - "minProperties": 1 - }, - "examples": { - "enable": { - "summary": "Enables multi-region failover for a region", - "description": "Enables multi-region failover for the specified region", - "value": { - "region": "us-east-1" - } + "message": { + "type": "string" } - } - } - } - }, - "SSH_Key_Service_API_SshKeyRequestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "label", - "public_key" - ], - "description": "Describes the request body for an SSH key.", - "properties": { - "label": { - "type": "string", - "description": "The SSH key label." - }, - "public_key": { - "type": "string", - "description": "The public key." - } + }, + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "forbidden" }, - "additionalProperties": false, - "minProperties": 1 + "message": { + "type": "string", + "example": "You do not have permission to perform this action." + } }, - "example": { - "label": "mykey", - "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQChwPHzTTDKDpSbpa2+d22LcbQmsw92eLsUK3Fmei1fiGDkd34NsYCN8m7lsi3NbvdMS83CtPQPWiCveYPzFs1/hHc4PYj8opD2CNnr5iWVVbyaulCYHCgVv4aB/ojcexg8q483A4xJeF15TiCr/gu34rK6ucTvC/tn/rCwJBudczvEwt0klqYwv8Cl/ytaQboSuem5KgSjO3lMrb6CWtfSNhE43ZOw+UBFBqxIninN868vGMkIv9VY34Pwj54rPn/ItQd6Ef4B0KHHaGmzK0vfP+AK7FxNMoHnj3iYT33KZNqtDozdn5tYyH/bThPebEtgqUn+/w5l6wZIC/8zzvls/127ngHk+jNa0PlNyS2TxhPUK4NaPHIEnnrlp07JEYC4ImcBjaYCWAdcTcUkcJjwZQkN4bGmyO9cjICH98SdLD/HxqzTHeaYDbAX/Hu9HfaBb5dXLWsjw3Xc6hoVnUUZbMQyfgb0KgxDLh92eNGxJkpZiL0VDNOWCxDWsNpzwhLNkLqCvI6lyxiLaUzvJAk6dPaRhExmCbU1lDO2eR0FdSwC1TEhJOT9eDIK1r2hztZKs2oa5FNFfB/IFHVWasVFC9N2h/r/egB5zsRxC9MqBLRBq95NBxaRSFng6ML5WZSw41Qi4C/JWVm89rdj2WqScDHYyAdwyyppWU4T5c9Fmw== example@example.com" - } + "required": [ + "error", + "message" + ] } - } + ] }, - "Federated_Authentication_API_CreateSsoDomain": { - "description": "Request body for creating a new domain.", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z]{2,})+$", - "description": "The domain name to create (e.g., \"acme.com\")." - } + "Federated_Authentication_API_NotFoundError": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "required": [ - "domain" - ], - "additionalProperties": false + "message": { + "type": "string" + } }, - "example": { - "domain": "acme.com" - } - } - } - }, - "Federated_Authentication_API_CreateIdentityProvider": { - "description": "Request body for creating a new Identity Provider.", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "idp_entity_id": { - "type": "string", - "format": "uri", - "description": "The Identity Provider Entity ID." - }, - "label": { - "type": "string", - "description": "The name of the Identity Provider." - }, - "sso_url": { - "type": "string", - "format": "uri", - "description": "The SSO URL for this IdP." - }, - "certificate": { - "type": "string", - "description": "The certificate for this IdP." - } + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "not_found" }, - "required": [ - "label", - "idp_entity_id", - "sso_url", - "certificate" - ], - "additionalProperties": false + "message": { + "type": "string", + "example": "The resource you are trying to access does not exist, or you do not have access to it." + } }, - "example": { - "label": "Acme Corporation Azure AD", - "idp_entity_id": "https://idp.acme.com/saml", - "sso_url": "https://acme.com/sso", - "certificate": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----" - } + "required": [ + "error", + "message" + ] } - } + ] }, - "Federated_Authentication_API_UpdateIdentityProvider": { - "description": "Request body for updating an existing Identity Provider.", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "label": { - "type": "string", - "description": "The name of the Identity Provider." - }, - "certificate": { - "type": "string", - "description": "The X.509 certificate used for SAML authentication." - }, - "sso_url": { - "type": "string", - "format": "uri", - "description": "The Single Sign-On URL for the Identity Provider." - }, - "idp_entity_id": { - "type": "string", - "format": "uri", - "description": "The Identity Provider Entity ID." - } + "Federated_Authentication_API_InternalServerError": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "additionalProperties": false, - "minProperties": 1 + "message": { + "type": "string" + } }, - "example": { - "label": "Updated Acme Corporation Azure AD", - "certificate": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----", - "sso_url": "https://updatedacme.com/sso", - "idp_entity_id": "https://idp2.acme.com/saml" - } - } - } - }, - "Federated_Authentication_API_CreateSsoPolicy": { - "description": "Request body for creating an SSO policy for an Identity Provider.", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "domain_ids": { - "type": "array", - "description": "List of verified domain IDs to enforce this Identity Provider for.", - "items": { - "type": "string", - "description": "Reference to a verified SSO domain." - } - } + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "system" }, - "required": [ - "domain_ids" - ], - "additionalProperties": false + "message": { + "type": "string", + "pattern": "^An unknown error occurred\\. Please try your request again\\. If the problem persists, contact Acquia Support\\. Request ID: .+\\.$", + "description": "Standard error message with variable request ID.", + "example": "An unknown error occurred. Please try your request again. If the problem persists, contact Acquia Support. Request ID: abc123-def456-ghi789." + } }, - "example": { - "domain_ids": [ - "dom-456", - "dom-789" - ] - } + "required": [ + "error", + "message" + ] } - } + ] }, - "Federated_Authentication_API_UpdateSsoPolicy": { - "description": "Request body for updating an SSO policy for an Identity Provider.", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "domain_ids": { - "type": "array", - "description": "List of verified domain IDs to enforce this Identity Provider for.", - "items": { - "type": "string", - "description": "Reference to a verified SSO domain." + "Federated_Authentication_API_Message": { + "allOf": [ + { + "type": "object", + "properties": { + "_links": { + "type": "object", + "description": "HAL links for the resource", + "properties": { + "self": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } + }, + "required": [ + "self" + ], + "additionalProperties": { + "type": "object", + "description": "HAL link object", + "properties": { + "href": { + "type": "string", + "anyOf": [ + { + "format": "uri" + }, + { + "format": "uri-template" + } + ], + "description": "The target URI of the link (can be a URI or URI template)" + }, + "templated": { + "type": "boolean", + "description": "Whether the link is a URI template" + }, + "type": { + "type": "string", + "description": "Hint about the media type expected when dereferencing the target resource" + }, + "deprecation": { + "type": "string", + "description": "A URL to a resource that provides deprecation information" + }, + "name": { + "type": "string", + "description": "A secondary key for selecting links" + }, + "profile": { + "type": "string", + "description": "A URI that hints about the profile of the target resource" + }, + "title": { + "type": "string", + "description": "A human-readable identifier for the link" + }, + "hreflang": { + "type": "string", + "description": "The language of the target resource" + } + }, + "required": [ + "href" + ], + "examples": [ + { + "href": "https://api.acquia.com/v3/resources/1" + }, + { + "href": "https://api.acquia.com/v3/resources{?offset}", + "templated": true + } + ] } }, - "required": [ - "domain_ids" - ], - "additionalProperties": false, - "minProperties": 1 + "_embedded": { + "type": "object", + "description": "Embedded resources (optional)", + "additionalProperties": {} + } }, - "example": { - "domain_ids": [ - "dom-456" - ] - } + "required": [ + "_links" + ] + }, + { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message content" + } + }, + "required": [ + "message" + ] } - } + ] }, - "Federated_Authentication_API_UpdateSsoPolicyRequest": { - "description": "Request body for updating an SSO policy for an Identity Provider.", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "domain_ids": { - "type": "array", - "description": "List of verified domain IDs to enforce this Identity Provider for.", - "items": { - "type": "string", - "description": "Reference to a verified SSO domain." - } - } + "Federated_Authentication_API_InvalidOperationError": { + "allOf": [ + { + "type": "object", + "properties": { + "error": { + "type": "string" }, - "required": [ - "domain_ids" - ], - "additionalProperties": false, - "minProperties": 1 + "message": { + "type": "string" + } }, - "example": { - "domain_ids": [ - "dom-456" - ] - } - } - } - }, - "Federated_Authentication_API_CreateSsoPolicyRequest": { - "description": "Request body for creating an SSO policy for an Identity Provider.", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "domain_ids": { - "type": "array", - "description": "List of verified domain IDs to enforce this Identity Provider for.", - "items": { - "type": "string", - "description": "Reference to a verified SSO domain." - } - } + "required": [ + "error", + "message" + ] + }, + { + "type": "object", + "properties": { + "error": { + "type": "string", + "const": "conflict" }, - "required": [ - "domain_ids" - ], - "additionalProperties": false + "message": { + "type": "string", + "example": "The requested operation is invalid or cannot be completed." + } }, - "example": { - "domain_ids": [ - "dom-456", - "dom-789" - ] - } + "required": [ + "error", + "message" + ] } - } + ] + } + }, + "securitySchemes": { + "Environment_Service_API_BearerAuth": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT", + "description": "Use a valid JWT Bearer token in the Authorization header. Example: 'Bearer {token}'" + }, + "SSH_Key_Service_API_BearerAuth": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT", + "description": "Use a valid JWT Bearer token in the Authorization header. Example: 'Bearer {token}'" + }, + "Site_Service_API_BearerAuth": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT", + "description": "Use a valid JWT Bearer token in the Authorization header. Example: 'Bearer {token}'" + }, + "New_Relic_Provisioning_API_BearerAuth": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT", + "description": "Use a valid JWT Bearer token in the Authorization header. Example: 'Bearer {token}'" + }, + "Launch_Group_API_BearerAuth": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT", + "description": "Use a valid JWT Bearer token in the Authorization header. Example: 'Bearer {token}'" + }, + "CDN_API_BearerAuth": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT", + "description": "Use a valid JWT Bearer token in the Authorization header. Example: 'Bearer {token}'" + }, + "Tag_API_BearerAuth": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT", + "description": "Use a valid JWT Bearer token in the Authorization header. Example: 'Bearer {token}'" + }, + "Codebase_Service_API_BearerAuth": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT", + "description": "Use a valid JWT Bearer token in the Authorization header. Example: 'Bearer {token}'" + }, + "Source_Platform_API_BearerAuth": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT", + "description": "Use a valid JWT Bearer token in the Authorization header. Example: 'Bearer {token}'" + }, + "API_Specs_API_BearerAuth": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT", + "description": "Bearer token authentication using a JWT." + }, + "Failover_Service_API_BearerAuth": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT", + "description": "Use a valid JWT Bearer token in the Authorization header. Example: 'Bearer {token}'" + }, + "Federated_Authentication_API_BearerAuth": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT", + "description": "Use a valid JWT Bearer token in the Authorization header. Example: 'Bearer {token}'" } } } diff --git a/assets/acquia-v3-spec.version b/assets/acquia-v3-spec.version index 7b4d9f3d..1259bc5a 100644 --- a/assets/acquia-v3-spec.version +++ b/assets/acquia-v3-spec.version @@ -1 +1 @@ -9334f85250729078f6fefbae153bc37d6cfe788c +49c5011b9c0f0073d15a3763544654edee096f26