openapi: 3.1.0
info:
  title: 'Vector Pro'
  description: "A public API for interacting with Vector Pro by BuiltFast.\n\nFor more information, visit [builtfast.com/vector](https://builtfast.com/vector)."
  version: 1.0.0
  contact:
    name: 'BuiltFast Support'
    url: 'https://builtfast.com/support'
    email: support@builtfast.com
  termsOfService: 'https://builtfast.com/terms'
servers:
  -
    url: 'https://api.builtfast.com'
tags:
  -
    name: Sites
    description: "\nManage serverless WordPress sites deployed on Vector infrastructure. Sites are\nthe primary resource representing customer applications, each with associated\nenvironments (staging/production), deployments, and CDN configurations.\n\nSites are created with a `pending` status and transition to `active` once provisioning\ncompletes. You can suspend sites to reduce costs during low-traffic periods.\n\n#### Site Status Lifecycle\n\n- `pending` - Site creation initiated, provisioning in progress\n- `active` - Site is fully operational and serving traffic\n- `suspended` - Site is paused to reduce costs (can be unsuspended)\n- `terminating` - Site deletion in progress\n- `terminated` - Site has been fully removed"
  -
    name: Environments
    description: "\nManage deployment environments for sites. Each site can have multiple environments\nwith their own domains, PHP versions, and secrets. Environment names use a slug format\n(lowercase letters, numbers, and hyphens).\n\nEnvironments are created with a `pending` status and transition to `active` once\ncontainer provisioning completes. Each environment gets a unique subdomain under\nyour registered domain.\n\n#### Environment Status Lifecycle\n\n- `pending` - Environment creation initiated, provisioning in progress\n- `active` - Environment is fully operational\n- `suspended` - Environment is paused\n- `terminating` - Environment deletion in progress\n- `terminated` - Environment has been fully removed\n\n#### Production Environment\n\nEach site can have at most one production environment (`is_production: true`).\nThe production environment receives CDN integration via Bunny.net."
  -
    name: Account
    description: "\nManage your Vector Pro account settings including API keys, SSH keys, and global secrets."
  -
    name: Authentication
    description: ''
  -
    name: Backups
    description: ''
  -
    name: Events
    description: "\nView event logs for Vector Pro resources. Events are logged automatically when\nactions occur (site creation, deployments, etc.) and are retained for 90 days.\n\nEvent logs provide an audit trail of all activity in your account.\n\n#### Actor Tracking\n\nEach event includes an `actor` object when the action was triggered via the API:\n- `ip` - The IP address of the request\n- `token_name` - The name of the API token used\n\nThe `actor` field is omitted for events triggered by system processes (scheduled tasks,\nqueue workers processing internal jobs, etc.) where no user context exists.\n\n#### Event Naming Convention\n\nEvents follow a consistent dot-notation pattern:\n- Simple actions: `{entity}.{action}` (e.g., `site.created`, `site.updated`)\n- Lifecycle operations: `{entity}.{operation}.{phase}` (e.g., `site.provisioning.started`)\n\n#### Available Event Types\n\n##### Site Events\n\n| Event | Description |\n|-------|-------------|\n| `site.created` | Site record has been created |\n| `site.updated` | Site settings have been modified |\n| `site.cloned` | Site has been cloned from another site |\n| `site.provisioning.started` | Container provisioning has started |\n| `site.provisioning.completed` | Site is fully provisioned and running |\n| `site.provisioning.failed` | Site provisioning failed |\n| `site.suspension.started` | Site suspension has started |\n| `site.suspension.completed` | Site has been suspended |\n| `site.unsuspension.started` | Site unsuspension has started |\n| `site.unsuspension.completed` | Site has been unsuspended |\n| `site.termination.started` | Site termination has started |\n| `site.termination.completed` | Site has been terminated |\n| `site.sftp.password.reset` | SFTP password has been reset |\n| `site.database.password.reset` | Database password has been reset |\n| `site.sshkey.added` | SSH key has been added to site |\n| `site.sshkey.removed` | SSH key has been removed from site |\n| `site.database.import.started` | Database import has started |\n| `site.database.import.completed` | Database import completed successfully |\n| `site.database.import.failed` | Database import failed |\n| `site.database.export.started` | Database export has started |\n| `site.database.export.completed` | Database export completed successfully |\n| `site.database.export.failed` | Database export failed |\n\n##### SSH Key Events\n\n| Event | Description |\n|-------|-------------|\n| `sshkey.created` | SSH key has been created |\n| `sshkey.deleted` | SSH key has been deleted |\n\n##### Environment Events\n\n| Event | Description |\n|-------|-------------|\n| `environment.created` | Production environment has been created |\n| `environment.updated` | Environment settings have been modified |\n| `environment.provisioning.started` | Environment provisioning has started |\n| `environment.provisioning.completed` | Environment is fully provisioned |\n| `environment.provisioning.failed` | Environment provisioning failed |\n| `environment.suspension.started` | Environment suspension has started |\n| `environment.suspension.completed` | Environment has been suspended |\n| `environment.unsuspension.started` | Environment unsuspension has started |\n| `environment.unsuspension.completed` | Environment has been unsuspended |\n| `environment.termination.started` | Environment termination has started |\n| `environment.termination.completed` | Environment has been terminated |\n| `environment.database.password.reset` | Database password has been reset |\n\n##### Deployment Events\n\n| Event | Description |\n|-------|-------------|\n| `deployment.started` | Deployment to production has started |\n| `deployment.completed` | Deployment completed successfully |\n| `deployment.failed` | Deployment failed |\n| `deployment.rollback.started` | Deployment rollback has started |\n| `deployment.rollback.completed` | Deployment rollback completed |\n| `deployment.rollback.failed` | Deployment rollback failed |\n\n##### CDN Events\n\n| Event | Description |\n|-------|-------------|\n| `cdn.setup.started` | CDN configuration has started |\n| `cdn.setup.completed` | CDN setup completed successfully |\n| `cdn.setup.failed` | CDN setup failed |\n\n##### DNS Events\n\n| Event | Description |\n|-------|-------------|\n| `dns.record.created` | DNS record has been created |\n| `dns.record.deleted` | DNS record has been deleted |\n\n##### WAF Events\n\n| Event | Description |\n|-------|-------------|\n| `waf.ratelimit.created` | Rate limit rule has been created |\n| `waf.ratelimit.updated` | Rate limit rule has been updated |\n| `waf.ratelimit.deleted` | Rate limit rule has been deleted |\n| `waf.blockedip.created` | IP block has been created |\n| `waf.blockedip.deleted` | IP block has been removed |\n| `waf.blockedreferrer.created` | Referrer block has been created |\n| `waf.blockedreferrer.deleted` | Referrer block has been removed |\n| `waf.allowedreferrer.created` | Allowed referrer has been added |\n| `waf.allowedreferrer.deleted` | Allowed referrer has been removed |\n\n##### Secret Events\n\n| Event | Description |\n|-------|-------------|\n| `secret.created` | Secret has been created |\n| `secret.updated` | Secret has been updated |\n| `secret.deleted` | Secret has been deleted |\n\n##### Domain Events\n\n| Event | Description |\n|-------|-------------|\n| `domain.created` | Domain has been registered |\n| `domain.deleted` | Domain has been deleted |\n\n##### API Key Events\n\n| Event | Description |\n|-------|-------------|\n| `apikey.created` | API key has been created |\n| `apikey.deleted` | API key has been deleted |\n\n##### Webhook Events\n\n| Event | Description |\n|-------|-------------|\n| `webhook.created` | Webhook endpoint has been registered |\n| `webhook.updated` | Webhook configuration has been modified |\n| `webhook.deleted` | Webhook endpoint has been removed |\n\n##### Cache Events\n\n| Event | Description |\n|-------|-------------|\n| `cache.purged` | Cache has been purged |"
  -
    name: 'PHP Versions'
    description: "\nGet available PHP versions for Vector environments."
  -
    name: Restores
    description: ''
  -
    name: Webhooks
    description: "\nManage webhooks that receive site event notifications. Webhooks are called when\nevents occur on your sites (deployments, status changes, etc.).\n\nSupports both HTTP webhooks and Slack webhooks for notifications.\n\n#### Webhook Signature Verification\n\nHTTP webhook payloads include an `X-Vector-Signature` header for verifying\nauthenticity. The header format is:\n\n```\nX-Vector-Signature: t=1234567890,v1=abc123...\n```\n\nTo verify a webhook:\n\n1. Parse the timestamp (`t`) and signature (`v1`) from the header\n2. Construct the signed message: `{timestamp}.{raw_request_body}`\n3. Compute HMAC-SHA256 using your webhook secret as the key\n4. Compare with the provided signature using constant-time comparison\n5. Validate timestamp is within tolerance (recommended: 5 minutes)\n\nExample verification (PHP):\n\n```php\n$header = $request->header('X-Vector-Signature');\npreg_match('/t=(\\d+),v1=([a-f0-9]+)/', $header, $matches);\n$timestamp = $matches[1];\n$signature = $matches[2];\n\n$message = $timestamp . '.' . $request->getContent();\n$expected = hash_hmac('sha256', $message, $webhookSecret);\n\nif (!hash_equals($expected, $signature)) {\n    throw new Exception('Invalid signature');\n}\n\nif (abs(time() - (int)$timestamp) > 300) {\n    throw new Exception('Timestamp too old');\n}\n```"
components:
  securitySchemes:
    default:
      type: http
      scheme: bearer
      description: 'You can retrieve your API key from your Vector dashboard.'
security:
  -
    default: []
paths:
  /api/v1/vector/sites:
    get:
      summary: 'List Sites'
      operationId: listSites
      description: "Retrieves a paginated list of all sites for the authenticated account.\nResults include each site's environments and their associated domains.\n\nUse `search` to filter by customer ID or subdomain, `status` to filter by\nsite lifecycle state, and `sort`/`direction` to control ordering. The\n`last_deployed_at` field is computed from the most recent completed\ndeployment across all environments and can also be used as a sort field."
      parameters:
        -
          in: query
          name: per_page
          description: 'Number of items per page (max 100). Default: 15.'
          required: false
          schema:
            type: integer
            description: 'Number of items per page (max 100). Default: 15.'
            examples:
              - 25
        -
          in: query
          name: search
          description: 'Search by `your_customer_id` or `subdomain` (partial, case-insensitive).'
          required: false
          schema:
            type:
              - string
              - 'null'
            description: 'Search by `your_customer_id` or `subdomain` (partial, case-insensitive).'
            examples:
              - acme
        -
          in: query
          name: status
          description: 'Filter by site status. Must be one of: `pending`, `activation_requested`, `active`, `suspension_requested`, `suspended`, `unsuspension_requested`, `termination_requested`, `terminated`, `canceled`.'
          required: false
          schema:
            type: string
            description: 'Filter by site status. Must be one of: `pending`, `activation_requested`, `active`, `suspension_requested`, `suspended`, `unsuspension_requested`, `termination_requested`, `terminated`, `canceled`.'
            examples:
              - active
        -
          in: query
          name: sort
          description: 'Sort results by the given field. Must be one of: `created_at`, `updated_at`, `status`, `your_customer_id`, `last_deployed_at`. Default: `created_at`.'
          required: false
          schema:
            type: string
            description: 'Sort results by the given field. Must be one of: `created_at`, `updated_at`, `status`, `your_customer_id`, `last_deployed_at`. Default: `created_at`.'
            examples:
              - your_customer_id
        -
          in: query
          name: direction
          description: 'Sort direction. Must be `asc` or `desc`. Default: `desc`.'
          required: false
          schema:
            type: string
            description: 'Sort direction. Must be `asc` or `desc`. Default: `desc`.'
            examples:
              - asc
        -
          in: query
          name: page
          description: 'Page number for pagination. Default: 1.'
          required: false
          schema:
            type: integer
            description: 'Page number for pagination. Default: 1.'
            examples:
              - 1
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          examples:
                            - 01jfgxk4nqrst5vwx9yz0abcde
                        your_customer_id:
                          type: string
                          examples:
                            - cust_12345
                        status:
                          type: string
                          examples:
                            - active
                        status_label:
                          type: string
                          examples:
                            - Active
                        dev_php_version:
                          type: string
                          examples:
                            - '8.3'
                        tags:
                          type: array
                          items:
                            type: string
                          examples:
                            -
                              - wordpress
                              - production
                        dev_domain:
                          type: string
                          examples:
                            - dev.wispy-dust.vectorpages.com
                        dev_db_host:
                          type: string
                          examples:
                            - dev-cluster.abc123.us-east-1.rds.amazonaws.com
                        dev_db_name:
                          type: string
                          examples:
                            - db_01jfgxk4nqrst5vwx9yz0abcde
                        dev_sftp:
                          type: object
                          properties:
                            hostname:
                              type: string
                              examples:
                                - ssh.vectorpages.com
                            port:
                              type: integer
                              examples:
                                - 22
                            username:
                              type: string
                              examples:
                                - wispy-dust
                        last_deployed_at:
                          type: string
                          examples:
                            - '2025-06-10T14:30:00+00:00'
                        environments:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: string
                                examples:
                                  - 01jfgxk4nqrst5vwx9yz0abcdg
                              name:
                                type: string
                                examples:
                                  - production
                              is_production:
                                type: boolean
                                examples:
                                  - true
                              status:
                                type: string
                                examples:
                                  - active
                              status_label:
                                type: string
                                examples:
                                  - Active
                              php_version:
                                type: string
                                examples:
                                  - '8.3'
                              platform_domain:
                                type: string
                                examples:
                                  - wispy-dust--prod.vectorpages.com
                              custom_domain:
                                type: string
                                examples:
                                  - example.com
                              custom_domain_certificate_status:
                                type: string
                                examples:
                                  - issued
                              dns_status_state:
                                type: string
                                examples:
                                  - verified
                              requires_dns_action:
                                type: boolean
                                examples:
                                  - false
                              created_at:
                                type: string
                                examples:
                                  - '2025-01-15T12:00:00+00:00'
                              updated_at:
                                type: string
                                examples:
                                  - '2025-01-15T12:00:00+00:00'
                          examples:
                            -
                              -
                                id: 01jfgxk4nqrst5vwx9yz0abcdg
                                name: production
                                is_production: true
                                status: active
                                status_label: Active
                                php_version: '8.3'
                                platform_domain: wispy-dust--prod.vectorpages.com
                                custom_domain: example.com
                                custom_domain_certificate_status: issued
                                dns_status_state: verified
                                requires_dns_action: false
                                created_at: '2025-01-15T12:00:00+00:00'
                                updated_at: '2025-01-15T12:00:00+00:00'
                        created_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                        updated_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                    examples:
                      -
                        -
                          id: 01jfgxk4nqrst5vwx9yz0abcde
                          your_customer_id: cust_12345
                          status: active
                          status_label: Active
                          dev_php_version: '8.3'
                          tags:
                            - wordpress
                            - production
                          dev_domain: dev.wispy-dust.vectorpages.com
                          dev_db_host: dev-cluster.abc123.us-east-1.rds.amazonaws.com
                          dev_db_name: db_01jfgxk4nqrst5vwx9yz0abcde
                          dev_sftp:
                            hostname: ssh.vectorpages.com
                            port: 22
                            username: wispy-dust
                          last_deployed_at: '2025-06-10T14:30:00+00:00'
                          environments:
                            -
                              id: 01jfgxk4nqrst5vwx9yz0abcdg
                              name: production
                              is_production: true
                              status: active
                              status_label: Active
                              php_version: '8.3'
                              platform_domain: wispy-dust--prod.vectorpages.com
                              custom_domain: example.com
                              custom_domain_certificate_status: issued
                              dns_status_state: verified
                              requires_dns_action: false
                              created_at: '2025-01-15T12:00:00+00:00'
                              updated_at: '2025-01-15T12:00:00+00:00'
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                  links:
                    type: object
                    properties: {  }
                  meta:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Sites retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      -
                        id: 01jfgxk4nqrst5vwx9yz0abcde
                        your_customer_id: cust_12345
                        status: active
                        status_label: Active
                        dev_php_version: '8.3'
                        tags:
                          - wordpress
                          - production
                        dev_domain: dev.wispy-dust.vectorpages.com
                        dev_db_host: dev-cluster.abc123.us-east-1.rds.amazonaws.com
                        dev_db_name: db_01jfgxk4nqrst5vwx9yz0abcde
                        dev_sftp:
                          hostname: ssh.vectorpages.com
                          port: 22
                          username: wispy-dust
                        last_deployed_at: '2025-06-10T14:30:00+00:00'
                        environments:
                          -
                            id: 01jfgxk4nqrst5vwx9yz0abcdg
                            name: production
                            is_production: true
                            status: active
                            status_label: Active
                            php_version: '8.3'
                            platform_domain: wispy-dust--prod.vectorpages.com
                            custom_domain: example.com
                            custom_domain_certificate_status: issued
                            dns_status_state: verified
                            requires_dns_action: false
                            created_at: '2025-01-15T12:00:00+00:00'
                            updated_at: '2025-01-15T12:00:00+00:00'
                        created_at: '2025-01-15T12:00:00+00:00'
                        updated_at: '2025-01-15T12:00:00+00:00'
                    links: {  }
                    meta: {  }
                    message: 'Sites retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      status:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The status must be a valid site status.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      status:
                        - 'The status must be a valid site status.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Sites
    post:
      summary: 'Create Site'
      operationId: createSite
      description: "Creates a new site for the authenticated account. The site is created with a\n`pending` status and will transition to `active` once provisioning completes.\n\nA development container is automatically provisioned for the site, accessible\nvia the `dev_domain` in the response."
      parameters: []
      responses:
        201:
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id:
                        type: string
                        examples:
                          - cust_12345
                      status:
                        type: string
                        examples:
                          - pending
                      status_label:
                        type: string
                        examples:
                          - Pending
                      dev_php_version:
                        type: string
                        examples:
                          - '8.3'
                      tags:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - wordpress
                            - production
                      dev_domain:
                        type: string
                        examples:
                          - dev.wispy-dust.vectorpages.com
                      dev_db_host:
                        type: string
                        examples:
                          - dev-cluster.abc123.us-east-1.rds.amazonaws.com
                      dev_db_name:
                        type: string
                        examples:
                          - db_01jfgxk4nqrst5vwx9yz0abcde
                      dev_sftp:
                        type: object
                        properties:
                          hostname:
                            type: string
                            examples:
                              - ssh.vectorpages.com
                          port:
                            type: integer
                            examples:
                              - 22
                          username:
                            type: string
                            examples:
                              - wispy-dust
                          password:
                            type: string
                            examples:
                              - 'aBcD1234!@#$EfGh5678'
                      dev_db_username:
                        type: string
                        examples:
                          - db_01jfgxk4nqrst5vwx9yz0abcde
                      dev_db_password:
                        type: string
                        examples:
                          - 'aBcD1234!@#$EfGh5678'
                      wp_admin:
                        type: object
                        properties:
                          user:
                            type: string
                            examples:
                              - myadmin
                          email:
                            type: string
                            examples:
                              - admin@example.com
                          password:
                            type: string
                            examples:
                              - 'xYz9876!@#$AbCd5432'
                          site_title:
                            type: string
                            examples:
                              - 'My Blog'
                      environments:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              examples:
                                - 01jfgxk4nqrst5vwx9yz0abcdg
                            name:
                              type: string
                              examples:
                                - production
                            is_production:
                              type: boolean
                              examples:
                                - true
                            status:
                              type: string
                              examples:
                                - pending
                            status_label:
                              type: string
                              examples:
                                - Pending
                            php_version:
                              type: string
                              examples:
                                - '8.3'
                            platform_domain:
                              type: string
                              examples:
                                - wispy-dust--prod.vectorpages.com
                            custom_domain:
                              type: string
                              examples:
                                - example.com
                            custom_domain_certificate_status:
                              type: string
                              examples:
                                - pending
                            dns_status_state:
                              type: string
                              examples:
                                - pending
                            requires_dns_action:
                              type: boolean
                              examples:
                                - true
                            created_at:
                              type: string
                              examples:
                                - '2025-01-15T12:00:00+00:00'
                            updated_at:
                              type: string
                              examples:
                                - '2025-01-15T12:00:00+00:00'
                        examples:
                          -
                            -
                              id: 01jfgxk4nqrst5vwx9yz0abcdg
                              name: production
                              is_production: true
                              status: pending
                              status_label: Pending
                              php_version: '8.3'
                              platform_domain: wispy-dust--prod.vectorpages.com
                              custom_domain: example.com
                              custom_domain_certificate_status: pending
                              dns_status_state: pending
                              requires_dns_action: true
                              created_at: '2025-01-15T12:00:00+00:00'
                              updated_at: '2025-01-15T12:00:00+00:00'
                            -
                              id: 01jfgxk4nqrst5vwx9yz0abcdh
                              name: staging
                              is_production: false
                              status: pending
                              status_label: Pending
                              php_version: '8.3'
                              platform_domain: wispy-dust--staging.vectorpages.com
                              custom_domain: null
                              custom_domain_certificate_status: null
                              dns_status_state: not_required
                              requires_dns_action: false
                              created_at: '2025-01-15T12:00:00+00:00'
                              updated_at: '2025-01-15T12:00:00+00:00'
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Vector site creation initiated'
                  http_status:
                    type: integer
                    examples:
                      - 201
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id: cust_12345
                      status: pending
                      status_label: Pending
                      dev_php_version: '8.3'
                      tags:
                        - wordpress
                        - production
                      dev_domain: dev.wispy-dust.vectorpages.com
                      dev_db_host: dev-cluster.abc123.us-east-1.rds.amazonaws.com
                      dev_db_name: db_01jfgxk4nqrst5vwx9yz0abcde
                      dev_sftp:
                        hostname: ssh.vectorpages.com
                        port: 22
                        username: wispy-dust
                        password: 'aBcD1234!@#$EfGh5678'
                      dev_db_username: db_01jfgxk4nqrst5vwx9yz0abcde
                      dev_db_password: 'aBcD1234!@#$EfGh5678'
                      wp_admin:
                        user: myadmin
                        email: admin@example.com
                        password: 'xYz9876!@#$AbCd5432'
                        site_title: 'My Blog'
                      environments:
                        -
                          id: 01jfgxk4nqrst5vwx9yz0abcdg
                          name: production
                          is_production: true
                          status: pending
                          status_label: Pending
                          php_version: '8.3'
                          platform_domain: wispy-dust--prod.vectorpages.com
                          custom_domain: example.com
                          custom_domain_certificate_status: pending
                          dns_status_state: pending
                          requires_dns_action: true
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                        -
                          id: 01jfgxk4nqrst5vwx9yz0abcdh
                          name: staging
                          is_production: false
                          status: pending
                          status_label: Pending
                          php_version: '8.3'
                          platform_domain: wispy-dust--staging.vectorpages.com
                          custom_domain: null
                          custom_domain_certificate_status: null
                          dns_status_state: not_required
                          requires_dns_action: false
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Vector site creation initiated'
                    http_status: 201
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        422:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Validation Error'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      errors:
                        type: object
                        properties:
                          your_customer_id:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - 'The partner customer id field is required.'
                      message:
                        type: string
                        examples:
                          - 'Validation failed'
                      http_status:
                        type: integer
                        examples:
                          - 422
                    examples:
                      -
                        data: {  }
                        errors:
                          your_customer_id:
                            - 'The partner customer id field is required.'
                        message: 'Validation failed'
                        http_status: 422
                  -
                    description: 'No Cluster Available'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      errors:
                        type: object
                        properties:
                          cluster:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - 'No Vector cluster is configured for your account.'
                      message:
                        type: string
                        examples:
                          - 'No Vector cluster available for this account'
                      http_status:
                        type: integer
                        examples:
                          - 422
                    examples:
                      -
                        data: {  }
                        errors:
                          cluster:
                            - 'No Vector cluster is configured for your account.'
                        message: 'No Vector cluster available for this account'
                        http_status: 422
      tags:
        - Sites
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                your_customer_id:
                  type: string
                  description: 'Your internal customer identifier. Used to correlate sites with your billing or CRM system.'
                  examples:
                    - cust_12345
                dev_php_version:
                  type: string
                  description: 'The PHP version for the development container. Must be one of: 7.2, 7.3, 7.4, 8.0, 8.1, 8.2, 8.3, 8.4, 8.5.'
                  examples:
                    - '8.3'
                tags:
                  type: array
                  description: 'Optional array of tags for categorizing the site. Each tag must be slug format (lowercase letters, numbers, hyphens), max 100 characters, and unique.'
                  items:
                    type: string
                  examples:
                    -
                      - wordpress
                      - production
                production_domain:
                  type:
                    - string
                    - 'null'
                  description: 'Optional custom domain for the production environment. Must be a valid fully qualified domain name, max 253 chars. When provided, SSL certificate provisioning begins automatically. The domain owner must create DNS records to complete provisioning — see the `custom_domain_certificate` and `dns_target` fields on the environment for details.'
                  examples:
                    - example.com
                staging_domain:
                  type:
                    - string
                    - 'null'
                  description: 'Optional custom domain for the staging environment. Must be a valid fully qualified domain name, max 253 chars. When provided, SSL certificate provisioning begins automatically. The domain owner must create DNS records to complete provisioning — see the `custom_domain_certificate` and `dns_target` fields on the environment for details.'
                  examples:
                    - staging.example.com
                wp_admin_email:
                  type:
                    - string
                    - 'null'
                  description: 'Optional email address for WordPress auto-install. When provided, WordPress will be automatically installed in the dev container on first boot. The `wp_admin` block containing the generated password is only returned in this creation response.'
                  examples:
                    - admin@example.com
                wp_admin_user:
                  type:
                    - string
                    - 'null'
                  description: 'Optional WordPress admin username. Only used when `wp_admin_email` is provided. Defaults to "admin". Max 60 characters.'
                  examples:
                    - myadmin
                wp_site_title:
                  type:
                    - string
                    - 'null'
                  description: 'Optional WordPress site title. Only used when `wp_admin_email` is provided. Defaults to "WordPress" in the container. Max 255 characters.'
                  examples:
                    - 'My Blog'
              required:
                - your_customer_id
                - dev_php_version
  '/api/v1/vector/sites/{site}':
    get:
      summary: 'Get Site'
      operationId: getSite
      description: 'Retrieves details of a specific site including its environments and domains.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id:
                        type: string
                        examples:
                          - cust_12345
                      status:
                        type: string
                        examples:
                          - active
                      status_label:
                        type: string
                        examples:
                          - Active
                      tags:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - wordpress
                            - production
                      dev_domain:
                        type: string
                        examples:
                          - dev.wispy-dust.vectorpages.com
                      dev_db_host:
                        type: string
                        examples:
                          - dev-cluster.abc123.us-east-1.rds.amazonaws.com
                      dev_db_name:
                        type: string
                        examples:
                          - db_01jfgxk4nqrst5vwx9yz0abcde
                      environments:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              examples:
                                - 01jfgxk4nqrst5vwx9yz0abcdg
                            name:
                              type: string
                              examples:
                                - production
                            is_production:
                              type: boolean
                              examples:
                                - true
                            status:
                              type: string
                              examples:
                                - active
                            status_label:
                              type: string
                              examples:
                                - Active
                            php_version:
                              type: string
                              examples:
                                - '8.3'
                            platform_domain:
                              type: string
                              examples:
                                - wispy-dust--prod.vectorpages.com
                            custom_domain:
                              type: string
                              examples:
                                - example.com
                            custom_domain_certificate_status:
                              type: string
                              examples:
                                - issued
                            dns_status_state:
                              type: string
                              examples:
                                - verified
                            requires_dns_action:
                              type: boolean
                              examples:
                                - false
                            created_at:
                              type: string
                              examples:
                                - '2025-01-15T12:00:00+00:00'
                            updated_at:
                              type: string
                              examples:
                                - '2025-01-15T12:00:00+00:00'
                        examples:
                          -
                            -
                              id: 01jfgxk4nqrst5vwx9yz0abcdg
                              name: production
                              is_production: true
                              status: active
                              status_label: Active
                              php_version: '8.3'
                              platform_domain: wispy-dust--prod.vectorpages.com
                              custom_domain: example.com
                              custom_domain_certificate_status: issued
                              dns_status_state: verified
                              requires_dns_action: false
                              created_at: '2025-01-15T12:00:00+00:00'
                              updated_at: '2025-01-15T12:00:00+00:00'
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Site retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id: cust_12345
                      status: active
                      status_label: Active
                      tags:
                        - wordpress
                        - production
                      dev_domain: dev.wispy-dust.vectorpages.com
                      dev_db_host: dev-cluster.abc123.us-east-1.rds.amazonaws.com
                      dev_db_name: db_01jfgxk4nqrst5vwx9yz0abcde
                      environments:
                        -
                          id: 01jfgxk4nqrst5vwx9yz0abcdg
                          name: production
                          is_production: true
                          status: active
                          status_label: Active
                          php_version: '8.3'
                          platform_domain: wispy-dust--prod.vectorpages.com
                          custom_domain: example.com
                          custom_domain_certificate_status: issued
                          dns_status_state: verified
                          requires_dns_action: false
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Site retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
      tags:
        - Sites
    put:
      summary: 'Update Site'
      operationId: updateSite
      description: "Updates an existing site's metadata. Only the fields provided will be updated."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id:
                        type: string
                        examples:
                          - cust_67890
                      status:
                        type: string
                        examples:
                          - active
                      status_label:
                        type: string
                        examples:
                          - Active
                      tags:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - wordpress
                            - staging
                      dev_domain:
                        type: string
                        examples:
                          - dev.wispy-dust.vectorpages.com
                      dev_db_host:
                        type: string
                        examples:
                          - dev-cluster.abc123.us-east-1.rds.amazonaws.com
                      dev_db_name:
                        type: string
                        examples:
                          - db_01jfgxk4nqrst5vwx9yz0abcde
                      environments:
                        type: array
                        examples:
                          - []
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Vector site updated successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id: cust_67890
                      status: active
                      status_label: Active
                      tags:
                        - wordpress
                        - staging
                      dev_domain: dev.wispy-dust.vectorpages.com
                      dev_db_host: dev-cluster.abc123.us-east-1.rds.amazonaws.com
                      dev_db_name: db_01jfgxk4nqrst5vwx9yz0abcde
                      environments: []
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Vector site updated successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      tags:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'Tags must be an array of strings.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      tags:
                        - 'Tags must be an array of strings.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Sites
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                your_customer_id:
                  type: string
                  description: 'Your internal customer identifier.'
                  examples:
                    - cust_67890
                tags:
                  type: array
                  description: 'Array of tags for categorizing the site. Each tag must be slug format (lowercase letters, numbers, hyphens), max 100 characters, and unique. Pass `null` to clear tags.'
                  items:
                    type: string
                  examples:
                    -
                      - wordpress
                      - staging
    delete:
      summary: 'Delete Site'
      operationId: deleteSite
      description: "Initiates deletion of a site. This terminates the site's development container\nand CDN resources. The site status transitions to `terminating` and eventually\n`terminated`.\n\n**Important:** By default, all environments must be terminated before the site\ncan be deleted — use the environment delete endpoint to terminate each\nenvironment first, or pass `delete_environments: true` to have any remaining\ndeployed environments terminated inline as part of the site deletion job.\n\nThis operation is irreversible. All site data and configurations will be\npermanently removed."
      parameters: []
      responses:
        202:
          description: Accepted
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id:
                        type: string
                        examples:
                          - cust_12345
                      status:
                        type: string
                        examples:
                          - termination_requested
                      status_label:
                        type: string
                        examples:
                          - 'Termination Requested'
                      tags:
                        type: array
                        examples:
                          - []
                      dev_domain:
                        type: string
                        examples:
                          - dev.wispy-dust.vectorpages.com
                      dev_db_host:
                        type: string
                        examples:
                          - dev-cluster.abc123.us-east-1.rds.amazonaws.com
                      dev_db_name:
                        type: string
                        examples:
                          - db_01jfgxk4nqrst5vwx9yz0abcde
                      environments:
                        type: array
                        examples:
                          - []
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Vector site deletion initiated'
                  http_status:
                    type: integer
                    examples:
                      - 202
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id: cust_12345
                      status: termination_requested
                      status_label: 'Termination Requested'
                      tags: []
                      dev_domain: dev.wispy-dust.vectorpages.com
                      dev_db_host: dev-cluster.abc123.us-east-1.rds.amazonaws.com
                      dev_db_name: db_01jfgxk4nqrst5vwx9yz0abcde
                      environments: []
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Vector site deletion initiated'
                    http_status: 202
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: 'Active Environments'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      site:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'Cannot delete site with deployed environments. Please terminate all deployed environments first, or pass delete_environments=true to terminate them as part of the site deletion.'
                  message:
                    type: string
                    examples:
                      - 'Cannot delete site with deployed environments. Please terminate all deployed environments first, or pass delete_environments=true to terminate them as part of the site deletion.'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      site:
                        - 'Cannot delete site with deployed environments. Please terminate all deployed environments first, or pass delete_environments=true to terminate them as part of the site deletion.'
                    message: 'Cannot delete site with deployed environments. Please terminate all deployed environments first, or pass delete_environments=true to terminate them as part of the site deletion.'
                    http_status: 422
      tags:
        - Sites
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                delete_environments:
                  type: boolean
                  description: 'Optional. When true, any remaining deployed environments are terminated as part of the site deletion job (each environment is terminated in sequence before the dev container and Ymir project are removed). When omitted or false, the request is rejected with 422 if deployed environments still exist.'
                  examples:
                    - true
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/deployments':
    get:
      summary: 'List Site Deployments'
      operationId: "sitesDeployments\n\nListdeploymentsacrossallenvironmentsofasite.ListSiteDeployments"
      description: "Retrieves a paginated list of deployments across all non-terminated\nenvironments belonging to the given site, ordered by most recent first.\n\nOptionally filter by environment name to narrow results to a single\nenvironment (e.g. `production` or `staging`).\n\nDeployments attached to terminated environments are always excluded,\neven when an explicit `environment` filter matches one."
      parameters:
        -
          in: query
          name: environment
          description: 'Filter deployments to a specific environment by name.'
          required: false
          schema:
            type: string
            description: 'Filter deployments to a specific environment by name.'
            examples:
              - production
        -
          in: query
          name: per_page
          description: 'Number of items per page (max 100). Default: 15.'
          required: false
          schema:
            type: integer
            description: 'Number of items per page (max 100). Default: 15.'
            examples:
              - 25
        -
          in: query
          name: page
          description: 'Page number for pagination. Default: 1.'
          required: false
          schema:
            type: integer
            description: 'Page number for pagination. Default: 1.'
            examples:
              - 1
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          examples:
                            - 01jfgxk4nqrst5vwx9yz0abcdh
                        vector_environment_id:
                          type: string
                          examples:
                            - 01jfgxk4nqrst5vwx9yz0abcdg
                        is_auto_deploy:
                          type: boolean
                          examples:
                            - false
                        status:
                          type: string
                          examples:
                            - deployed
                        status_label:
                          type: string
                          examples:
                            - Deployed
                        stdout:
                          type: string
                          examples:
                            - 'Deployment output...'
                        stderr:
                          type:
                            - string
                            - 'null'
                          examples:
                            - null
                        actor:
                          type: string
                          examples:
                            - user@example.com
                        environment:
                          type: object
                          properties:
                            id:
                              type: string
                              examples:
                                - 01jfgxk4nqrst5vwx9yz0abcdg
                            vector_site_id:
                              type: string
                              examples:
                                - 01jfgxk4nqrst5vwx9yz0abcde
                            your_customer_id:
                              type: string
                              examples:
                                - cust_12345
                            name:
                              type: string
                              examples:
                                - production
                            is_production:
                              type: boolean
                              examples:
                                - true
                            status:
                              type: string
                              examples:
                                - active
                            status_label:
                              type: string
                              examples:
                                - Active
                            php_version:
                              type: string
                              examples:
                                - '8.3'
                            tags:
                              type: array
                              items:
                                type: string
                              examples:
                                -
                                  - wordpress
                            fqdn:
                              type: string
                              examples:
                                - example.com
                            custom_domain:
                              type: string
                              examples:
                                - example.com
                            subdomain:
                              type: string
                              examples:
                                - wispy-dust
                            created_at:
                              type: string
                              examples:
                                - '2025-01-15T12:00:00+00:00'
                            updated_at:
                              type: string
                              examples:
                                - '2025-01-15T12:00:00+00:00'
                        created_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                        updated_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                    examples:
                      -
                        -
                          id: 01jfgxk4nqrst5vwx9yz0abcdh
                          vector_environment_id: 01jfgxk4nqrst5vwx9yz0abcdg
                          is_auto_deploy: false
                          status: deployed
                          status_label: Deployed
                          stdout: 'Deployment output...'
                          stderr: null
                          actor: user@example.com
                          environment:
                            id: 01jfgxk4nqrst5vwx9yz0abcdg
                            vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                            your_customer_id: cust_12345
                            name: production
                            is_production: true
                            status: active
                            status_label: Active
                            php_version: '8.3'
                            tags:
                              - wordpress
                            fqdn: example.com
                            custom_domain: example.com
                            subdomain: wispy-dust
                            created_at: '2025-01-15T12:00:00+00:00'
                            updated_at: '2025-01-15T12:00:00+00:00'
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                  links:
                    type: object
                    properties: {  }
                  meta:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Deployments retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      -
                        id: 01jfgxk4nqrst5vwx9yz0abcdh
                        vector_environment_id: 01jfgxk4nqrst5vwx9yz0abcdg
                        is_auto_deploy: false
                        status: deployed
                        status_label: Deployed
                        stdout: 'Deployment output...'
                        stderr: null
                        actor: user@example.com
                        environment:
                          id: 01jfgxk4nqrst5vwx9yz0abcdg
                          vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                          your_customer_id: cust_12345
                          name: production
                          is_production: true
                          status: active
                          status_label: Active
                          php_version: '8.3'
                          tags:
                            - wordpress
                          fqdn: example.com
                          custom_domain: example.com
                          subdomain: wispy-dust
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                        created_at: '2025-01-15T12:00:00+00:00'
                        updated_at: '2025-01-15T12:00:00+00:00'
                    links: {  }
                    meta: {  }
                    message: 'Deployments retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      per_page:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'Maximum items per page is 100.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      per_page:
                        - 'Maximum items per page is 100.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Sites
    parameters:
      -
        in: path
        name: site
        description: 'The site.'
        required: true
        schema:
          type: string
          examples:
            - architecto
      -
        in: path
        name: vectorSite
        description: 'The site ID or subdomain.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/suspend':
    put:
      summary: 'Suspend Site'
      operationId: suspendSite
      description: "Suspends a site's development container by scaling the ECS service to zero.\nThis reduces costs during low-traffic periods while preserving container\nresources for quick resumption.\n\nThe site must be in `active` status to be suspended. Suspended sites can be\nresumed using the unsuspend endpoint."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id:
                        type: string
                        examples:
                          - cust_12345
                      status:
                        type: string
                        examples:
                          - suspended
                      status_label:
                        type: string
                        examples:
                          - Suspended
                      tags:
                        type: array
                        examples:
                          - []
                      dev_domain:
                        type: string
                        examples:
                          - dev.wispy-dust.vectorpages.com
                      environments:
                        type: array
                        examples:
                          - []
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Vector site suspension initiated'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id: cust_12345
                      status: suspended
                      status_label: Suspended
                      tags: []
                      dev_domain: dev.wispy-dust.vectorpages.com
                      environments: []
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Vector site suspension initiated'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: 'Invalid State'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      status:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - "Site cannot be suspended from current state 'pending'. Site must be 'active' to be suspended."
                  message:
                    type: string
                    examples:
                      - "Site cannot be suspended from current state 'pending'. Site must be 'active' to be suspended."
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      status:
                        - "Site cannot be suspended from current state 'pending'. Site must be 'active' to be suspended."
                    message: "Site cannot be suspended from current state 'pending'. Site must be 'active' to be suspended."
                    http_status: 422
      tags:
        - Sites
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/unsuspend':
    put:
      summary: 'Unsuspend Site'
      operationId: unsuspendSite
      description: "Resumes a previously suspended site's development container by scaling the\nECS service back to one. The site must be in `suspended` status to be unsuspended.\n\nAfter unsuspension, the site transitions back to `active` status and resumes\nserving traffic."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id:
                        type: string
                        examples:
                          - cust_12345
                      status:
                        type: string
                        examples:
                          - active
                      status_label:
                        type: string
                        examples:
                          - Active
                      tags:
                        type: array
                        examples:
                          - []
                      dev_domain:
                        type: string
                        examples:
                          - dev.wispy-dust.vectorpages.com
                      environments:
                        type: array
                        examples:
                          - []
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Vector site unsuspension initiated'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id: cust_12345
                      status: active
                      status_label: Active
                      tags: []
                      dev_domain: dev.wispy-dust.vectorpages.com
                      environments: []
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Vector site unsuspension initiated'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: 'Invalid State'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      status:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - "Site cannot be unsuspended from current state 'active'. Site must be 'suspended' to be unsuspended."
                  message:
                    type: string
                    examples:
                      - "Site cannot be unsuspended from current state 'active'. Site must be 'suspended' to be unsuspended."
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      status:
                        - "Site cannot be unsuspended from current state 'active'. Site must be 'suspended' to be unsuspended."
                    message: "Site cannot be unsuspended from current state 'active'. Site must be 'suspended' to be unsuspended."
                    http_status: 422
      tags:
        - Sites
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/clone':
    post:
      summary: 'Clone Site'
      operationId: cloneSite
      description: "Creates a new site by cloning an existing site's development container,\nincluding files and database. Only the development container is cloned;\nproduction and staging environments are not copied. The new site is created\nwith fresh, empty environments.\n\nThis workflow is useful for testing larger redesigns or refactors in\nisolation while still allowing maintenance of the original site. The cloned\nsite operates independently, so changes to one do not affect the other.\n\nThe new site inherits attributes from the source site unless overridden in\nthe request. The cloned site is created with a `pending` status and will\ntransition to `active` once the clone operation completes."
      parameters: []
      responses:
        201:
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdf
                      your_customer_id:
                        type: string
                        examples:
                          - cust_12345
                      status:
                        type: string
                        examples:
                          - pending
                      status_label:
                        type: string
                        examples:
                          - Pending
                      tags:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - wordpress
                            - clone
                      dev_domain:
                        type: string
                        examples:
                          - dev.wispy-dust.vectorpages.com
                      dev_db_username:
                        type: string
                        examples:
                          - db_01jfgxk4nqrst5vwx9yz0abcdf
                      dev_db_password:
                        type: string
                        examples:
                          - 'aBcD1234!@#$EfGh5678'
                      environments:
                        type: array
                        examples:
                          - []
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Vector site clone initiated'
                  http_status:
                    type: integer
                    examples:
                      - 201
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdf
                      your_customer_id: cust_12345
                      status: pending
                      status_label: Pending
                      tags:
                        - wordpress
                        - clone
                      dev_domain: dev.wispy-dust.vectorpages.com
                      dev_db_username: db_01jfgxk4nqrst5vwx9yz0abcdf
                      dev_db_password: 'aBcD1234!@#$EfGh5678'
                      environments: []
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Vector site clone initiated'
                    http_status: 201
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Validation Error - Site Not Active'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      errors:
                        type: object
                        properties:
                          site:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - 'Source site must be in active state to clone.'
                      message:
                        type: string
                        examples:
                          - 'Validation failed'
                      http_status:
                        type: integer
                        examples:
                          - 422
                    examples:
                      -
                        data: {  }
                        errors:
                          site:
                            - 'Source site must be in active state to clone.'
                        message: 'Validation failed'
                        http_status: 422
                  -
                    description: 'Validation Error - No Dev Container'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      errors:
                        type: object
                        properties:
                          site:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - 'Source site must have a dev container to clone.'
                      message:
                        type: string
                        examples:
                          - 'Validation failed'
                      http_status:
                        type: integer
                        examples:
                          - 422
                    examples:
                      -
                        data: {  }
                        errors:
                          site:
                            - 'Source site must have a dev container to clone.'
                        message: 'Validation failed'
                        http_status: 422
      tags:
        - Sites
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                your_customer_id:
                  type:
                    - string
                    - 'null'
                  description: 'Optional customer identifier. Inherits from source if not provided.'
                  examples:
                    - cust_12345
                dev_php_version:
                  type:
                    - string
                    - 'null'
                  description: 'Optional PHP version. Inherits from source if not provided.'
                  examples:
                    - '8.3'
                tags:
                  type: array
                  description: 'Optional tags. Inherits from source if not provided.'
                  items:
                    type: string
                  examples:
                    -
                      - wordpress
                      - clone
    parameters:
      -
        in: path
        name: site
        description: 'The source site ID to clone from.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/sftp/reset-password':
    post:
      summary: 'Reset Password'
      operationId: sitesSFTPResetPassword
      description: "Generates a new SFTP password for the site's development container.\nThe old password is immediately invalidated.\n\n> [!WARNING]\n> The new password is returned ONLY in this response. Store it securely—it cannot be retrieved again.\n\nSFTP connection details:\n- hostname: ssh.{partner-domain} (e.g., ssh.vectorpages.com)\n- port: 22\n- username: site subdomain (e.g., my-site)\n- password: the generated password"
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      status:
                        type: string
                        examples:
                          - active
                      status_label:
                        type: string
                        examples:
                          - Active
                      dev_php_version:
                        type: string
                        examples:
                          - '8.3'
                      tags:
                        type: array
                        examples:
                          - []
                      dev_domain:
                        type: string
                        examples:
                          - dev.wispy-dust.vectorpages.com
                      dev_sftp:
                        type: object
                        properties:
                          hostname:
                            type: string
                            examples:
                              - ssh.vectorpages.com
                          port:
                            type: integer
                            examples:
                              - 22
                          username:
                            type: string
                            examples:
                              - wispy-dust
                          password:
                            type: string
                            examples:
                              - 'aBcD1234!@#$EfGh5678'
                      environments:
                        type: array
                        examples:
                          - []
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'SFTP password reset successfully. Store the new password securely - it will not be shown again.'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id: null
                      status: active
                      status_label: Active
                      dev_php_version: '8.3'
                      tags: []
                      dev_domain: dev.wispy-dust.vectorpages.com
                      dev_sftp:
                        hostname: ssh.vectorpages.com
                        port: 22
                        username: wispy-dust
                        password: 'aBcD1234!@#$EfGh5678'
                      environments: []
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'SFTP password reset successfully. Store the new password securely - it will not be shown again.'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
      tags:
        - Sites
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/db/reset-password':
    post:
      summary: 'Reset Password'
      operationId: sitesDatabasesResetPassword
      description: "Generates a new database password for the site's development container.\nThe old password is immediately invalidated.\n\n> [!WARNING]\n> The new password is returned ONLY in this response. Store it securely—it cannot be retrieved again."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      status:
                        type: string
                        examples:
                          - active
                      status_label:
                        type: string
                        examples:
                          - Active
                      dev_php_version:
                        type: string
                        examples:
                          - '8.3'
                      tags:
                        type: array
                        examples:
                          - []
                      dev_domain:
                        type: string
                        examples:
                          - dev.wispy-dust.vectorpages.com
                      dev_db_username:
                        type: string
                        examples:
                          - db_01jfgxk4nqrst5vwx9yz0abcde
                      dev_db_password:
                        type: string
                        examples:
                          - 'aBcD1234!@#$EfGh5678'
                      environments:
                        type: array
                        examples:
                          - []
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Database password reset successfully. Store the new password securely - it will not be shown again.'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id: null
                      status: active
                      status_label: Active
                      dev_php_version: '8.3'
                      tags: []
                      dev_domain: dev.wispy-dust.vectorpages.com
                      dev_db_username: db_01jfgxk4nqrst5vwx9yz0abcde
                      dev_db_password: 'aBcD1234!@#$EfGh5678'
                      environments: []
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Database password reset successfully. Store the new password securely - it will not be shown again.'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
      tags:
        - Sites
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/wp/reconfig':
    post:
      summary: 'Regenerate wp-config.php'
      operationId: sitesWordPressRegenerateWpConfig.php
      description: "Regenerates the wp-config.php file for the site's development container\nwith current database credentials, WP_HOME/WP_SITEURL, and HMAC secret."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      status:
                        type: string
                        examples:
                          - active
                      status_label:
                        type: string
                        examples:
                          - Active
                      dev_php_version:
                        type: string
                        examples:
                          - '8.3'
                      tags:
                        type: array
                        examples:
                          - []
                      dev_domain:
                        type: string
                        examples:
                          - wispy-dust.vectorpages.com
                      environments:
                        type: array
                        examples:
                          - []
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'WordPress configuration regenerated successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id: null
                      status: active
                      status_label: Active
                      dev_php_version: '8.3'
                      tags: []
                      dev_domain: wispy-dust.vectorpages.com
                      environments: []
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'WordPress configuration regenerated successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: 'Not Active'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      status:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - "Site must be active to regenerate wp-config. Current state: 'pending'."
                  message:
                    type: string
                    examples:
                      - "Site must be active to regenerate wp-config. Current state: 'pending'."
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      status:
                        - "Site must be active to regenerate wp-config. Current state: 'pending'."
                    message: "Site must be active to regenerate wp-config. Current state: 'pending'."
                    http_status: 422
      tags:
        - Sites
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/db/export':
    post:
      summary: 'Create Export'
      operationId: sitesDatabasesCreateExport
      description: "Start a database export operation. Dispatches an async job to create\nthe export and upload it to S3. Poll the status endpoint to check progress\nand retrieve the download URL when complete."
      parameters: []
      responses:
        202:
          description: Accepted
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdg
                      vector_site_id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      status:
                        type: string
                        examples:
                          - pending
                      status_label:
                        type: string
                        examples:
                          - Pending
                      format:
                        type: string
                        examples:
                          - sql
                      size_bytes:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      duration_ms:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      error_message:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      download_expires_at:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      started_at:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      completed_at:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                  message:
                    type: string
                    examples:
                      - 'Database export started'
                  http_status:
                    type: integer
                    examples:
                      - 202
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdg
                      vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                      status: pending
                      status_label: Pending
                      format: sql
                      size_bytes: null
                      duration_ms: null
                      error_message: null
                      download_expires_at: null
                      created_at: '2025-01-15T12:00:00+00:00'
                      started_at: null
                      completed_at: null
                    message: 'Database export started'
                    http_status: 202
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      format:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The selected format is invalid.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      format:
                        - 'The selected format is invalid.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Sites
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                format:
                  type:
                    - string
                    - 'null'
                  description: 'Export format. Currently only "sql" is supported. Default: sql.'
                  examples:
                    - sql
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/imports':
    post:
      summary: 'Create Import Session'
      operationId: sitesImportsCreateImportSession
      description: "Create an archive import session. Returns presigned S3 upload URL(s)\nthat can be used to upload the archive file directly to storage.\n\nThe maximum file size is 50GB by default. Higher limits can be configured\nper-cluster on request.\n\nFor files larger than the multipart threshold (~100MB), returns multiple\npresigned URLs (one per part) along with an `upload_id`. Parts are 100MB each,\nso a 1GB file requires 10 parts. For smaller files, returns a single presigned\nupload URL.\n\nAfter uploading, call the \"Run Import\" endpoint to execute the import."
      parameters: []
      responses:
        201:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Created (single upload)'
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdh
                          vector_site_id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcde
                          status:
                            type: string
                            examples:
                              - pending
                          status_label:
                            type: string
                            examples:
                              - Pending
                          scope:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          filename:
                            type: string
                            examples:
                              - backup.sql.gz
                          content_length:
                            type: integer
                            examples:
                              - 52428800
                          is_multipart:
                            type: boolean
                            examples:
                              - false
                          part_count:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          checksum:
                            type: object
                            properties:
                              provided_md5:
                                type: string
                                examples:
                                  - d41d8cd98f00b204e9800998ecf8427e
                              s3_etag:
                                type:
                                  - string
                                  - 'null'
                                examples:
                                  - null
                          metadata:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          options:
                            type: object
                            properties:
                              drop_tables:
                                type: boolean
                                examples:
                                  - true
                              disable_foreign_keys:
                                type: boolean
                                examples:
                                  - true
                              search_replace:
                                type:
                                  - string
                                  - 'null'
                                examples:
                                  - null
                          duration_ms:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          error_message:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          created_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          uploaded_at:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          started_at:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          completed_at:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          upload_url:
                            type: string
                            examples:
                              - 'https://s3.amazonaws.com/bucket/imports/...'
                          upload_expires_at:
                            type: string
                            examples:
                              - '2025-01-16T12:00:00+00:00'
                      message:
                        type: string
                        examples:
                          - 'Import session created successfully'
                      http_status:
                        type: integer
                        examples:
                          - 201
                    examples:
                      -
                        data:
                          id: 01jfgxk4nqrst5vwx9yz0abcdh
                          vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                          status: pending
                          status_label: Pending
                          scope: null
                          filename: backup.sql.gz
                          content_length: 52428800
                          is_multipart: false
                          part_count: null
                          checksum:
                            provided_md5: d41d8cd98f00b204e9800998ecf8427e
                            s3_etag: null
                          metadata: null
                          options:
                            drop_tables: true
                            disable_foreign_keys: true
                            search_replace: null
                          duration_ms: null
                          error_message: null
                          created_at: '2025-01-15T12:00:00+00:00'
                          uploaded_at: null
                          started_at: null
                          completed_at: null
                          upload_url: 'https://s3.amazonaws.com/bucket/imports/...'
                          upload_expires_at: '2025-01-16T12:00:00+00:00'
                        message: 'Import session created successfully'
                        http_status: 201
                  -
                    description: 'Created (multipart upload)'
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdh
                          vector_site_id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcde
                          status:
                            type: string
                            examples:
                              - pending
                          status_label:
                            type: string
                            examples:
                              - Pending
                          scope:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          filename:
                            type: string
                            examples:
                              - backup.tar.gz
                          content_length:
                            type: integer
                            examples:
                              - 161061273600
                          is_multipart:
                            type: boolean
                            examples:
                              - true
                          part_count:
                            type: integer
                            examples:
                              - 30
                          checksum:
                            type: object
                            properties:
                              provided_md5:
                                type:
                                  - string
                                  - 'null'
                                examples:
                                  - null
                              s3_etag:
                                type:
                                  - string
                                  - 'null'
                                examples:
                                  - null
                          metadata:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          options:
                            type: object
                            properties:
                              drop_tables:
                                type: boolean
                                examples:
                                  - true
                              disable_foreign_keys:
                                type: boolean
                                examples:
                                  - true
                              search_replace:
                                type:
                                  - string
                                  - 'null'
                                examples:
                                  - null
                          duration_ms:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          error_message:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          created_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          uploaded_at:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          started_at:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          completed_at:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          upload_id:
                            type: string
                            examples:
                              - abc123
                          upload_parts:
                            type: array
                            items:
                              type: object
                              properties:
                                part_number:
                                  type: integer
                                  examples:
                                    - 1
                                url:
                                  type: string
                                  examples:
                                    - 'https://s3.amazonaws.com/...'
                            examples:
                              -
                                -
                                  part_number: 1
                                  url: 'https://s3.amazonaws.com/...'
                          upload_expires_at:
                            type: string
                            examples:
                              - '2025-01-16T12:00:00+00:00'
                      message:
                        type: string
                        examples:
                          - 'Import session created successfully'
                      http_status:
                        type: integer
                        examples:
                          - 201
                    examples:
                      -
                        data:
                          id: 01jfgxk4nqrst5vwx9yz0abcdh
                          vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                          status: pending
                          status_label: Pending
                          scope: null
                          filename: backup.tar.gz
                          content_length: 161061273600
                          is_multipart: true
                          part_count: 30
                          checksum:
                            provided_md5: null
                            s3_etag: null
                          metadata: null
                          options:
                            drop_tables: true
                            disable_foreign_keys: true
                            search_replace: null
                          duration_ms: null
                          error_message: null
                          created_at: '2025-01-15T12:00:00+00:00'
                          uploaded_at: null
                          started_at: null
                          completed_at: null
                          upload_id: abc123
                          upload_parts:
                            -
                              part_number: 1
                              url: 'https://s3.amazonaws.com/...'
                          upload_expires_at: '2025-01-16T12:00:00+00:00'
                        message: 'Import session created successfully'
                        http_status: 201
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      site:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'Site must be in active state to import.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      site:
                        - 'Site must be in active state to import.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Sites
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                scope:
                  type:
                    - string
                    - 'null'
                  description: ''
                  enum:
                    - database
                  examples:
                    - database
                filename:
                  type:
                    - string
                    - 'null'
                  description: 'The archive filename.'
                  examples:
                    - backup.sql.gz
                content_length:
                  type: integer
                  description: 'The file size in bytes.'
                  examples:
                    - 104857600
                content_md5:
                  type:
                    - string
                    - 'null'
                  description: 'The MD5 hash of the file (32 hex characters).'
                  examples:
                    - d41d8cd98f00b204e9800998ecf8427e
                options:
                  type:
                    - object
                    - 'null'
                  description: 'Import options.'
                  properties:
                    drop_tables:
                      type:
                        - boolean
                        - 'null'
                      description: 'Drop existing tables before import. Default: true.'
                      examples:
                        - true
                    disable_foreign_keys:
                      type:
                        - boolean
                        - 'null'
                      description: 'Disable foreign key checks during import. Default: true.'
                      examples:
                        - true
                    search_replace:
                      type:
                        - object
                        - 'null'
                      description: 'Search and replace configuration.'
                      properties:
                        from:
                          type:
                            - string
                            - 'null'
                          description: 'The value to search for.'
                          examples:
                            - example.org
                        to:
                          type:
                            - string
                            - 'null'
                          description: 'The replacement value.'
                          examples:
                            - example.com
                      examples:
                        - []
                  examples:
                    - []
              required:
                - content_length
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/imports/{import}/run':
    post:
      summary: 'Run Import'
      operationId: sitesImportsRunImport
      description: "Execute an archive import from S3 after the file has been uploaded via the\npresigned URL(s). Dispatches an async job to perform the import.\n\nFor multipart uploads, provide the `parts` array containing the\n`part_number` and `etag` for each uploaded part. Each part can be up to\n5GB. The server will finalize the multipart upload before starting the\nimport job.\n\nThe import must be in `pending` or `uploaded` status and not expired."
      parameters: []
      responses:
        202:
          description: Accepted
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdh
                      vector_site_id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      status:
                        type: string
                        examples:
                          - uploaded
                      status_label:
                        type: string
                        examples:
                          - Uploaded
                      scope:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      filename:
                        type: string
                        examples:
                          - backup.sql.gz
                      content_length:
                        type: integer
                        examples:
                          - 52428800
                      is_multipart:
                        type: boolean
                        examples:
                          - false
                      part_count:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      checksum:
                        type: object
                        properties:
                          provided_md5:
                            type: string
                            examples:
                              - d41d8cd98f00b204e9800998ecf8427e
                          s3_etag:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                      metadata:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      options:
                        type: object
                        properties:
                          drop_tables:
                            type: boolean
                            examples:
                              - true
                          disable_foreign_keys:
                            type: boolean
                            examples:
                              - true
                          search_replace:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                      duration_ms:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      error_message:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      uploaded_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:01+00:00'
                      started_at:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      completed_at:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                  message:
                    type: string
                    examples:
                      - 'Archive import started'
                  http_status:
                    type: integer
                    examples:
                      - 202
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdh
                      vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                      status: uploaded
                      status_label: Uploaded
                      scope: null
                      filename: backup.sql.gz
                      content_length: 52428800
                      is_multipart: false
                      part_count: null
                      checksum:
                        provided_md5: d41d8cd98f00b204e9800998ecf8427e
                        s3_etag: null
                      metadata: null
                      options:
                        drop_tables: true
                        disable_foreign_keys: true
                        search_replace: null
                      duration_ms: null
                      error_message: null
                      created_at: '2025-01-15T12:00:00+00:00'
                      uploaded_at: '2025-01-15T12:00:01+00:00'
                      started_at: null
                      completed_at: null
                    message: 'Archive import started'
                    http_status: 202
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Import not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Import not found'
                    http_status: 404
        422:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Not Ready'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      errors:
                        type: object
                        properties:
                          status:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - 'Import must be in pending or uploaded status'
                      message:
                        type: string
                        examples:
                          - 'Import is not ready to run'
                      http_status:
                        type: integer
                        examples:
                          - 422
                    examples:
                      -
                        data: {  }
                        errors:
                          status:
                            - 'Import must be in pending or uploaded status'
                        message: 'Import is not ready to run'
                        http_status: 422
                  -
                    description: Expired
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      errors:
                        type: object
                        properties:
                          expires_at:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - 'Please create a new import session'
                      message:
                        type: string
                        examples:
                          - 'Import session has expired'
                      http_status:
                        type: integer
                        examples:
                          - 422
                    examples:
                      -
                        data: {  }
                        errors:
                          expires_at:
                            - 'Please create a new import session'
                        message: 'Import session has expired'
                        http_status: 422
                  -
                    description: 'Multipart Failed'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      errors:
                        type: object
                        properties:
                          parts:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - 'Failed to complete multipart upload'
                      message:
                        type: string
                        examples:
                          - 'Failed to finalize upload'
                      http_status:
                        type: integer
                        examples:
                          - 422
                    examples:
                      -
                        data: {  }
                        errors:
                          parts:
                            - 'Failed to complete multipart upload'
                        message: 'Failed to finalize upload'
                        http_status: 422
      tags:
        - Sites
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                parts:
                  type: array
                  description: 'Multipart upload parts (required for multipart uploads).'
                  items:
                    type: string
                  examples:
                    -
                      - architecto
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
      -
        in: path
        name: import
        description: 'The import ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdh
  '/api/v1/vector/sites/{site}/imports/{import}':
    get:
      summary: 'Get Import Status'
      operationId: sitesImportsGetImportStatus
      description: "Get the current status of an archive import operation. If the import is still\npending and not expired, includes fresh presigned upload URL(s)."
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: Pending
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdh
                          vector_site_id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcde
                          status:
                            type: string
                            examples:
                              - pending
                          status_label:
                            type: string
                            examples:
                              - Pending
                          scope:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          filename:
                            type: string
                            examples:
                              - backup.sql.gz
                          content_length:
                            type: integer
                            examples:
                              - 52428800
                          is_multipart:
                            type: boolean
                            examples:
                              - false
                          part_count:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          checksum:
                            type: object
                            properties:
                              provided_md5:
                                type: string
                                examples:
                                  - d41d8cd98f00b204e9800998ecf8427e
                              s3_etag:
                                type:
                                  - string
                                  - 'null'
                                examples:
                                  - null
                          metadata:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          options:
                            type: object
                            properties:
                              drop_tables:
                                type: boolean
                                examples:
                                  - true
                              disable_foreign_keys:
                                type: boolean
                                examples:
                                  - true
                              search_replace:
                                type:
                                  - string
                                  - 'null'
                                examples:
                                  - null
                          duration_ms:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          error_message:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          created_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          uploaded_at:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          started_at:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          completed_at:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          upload_url:
                            type: string
                            examples:
                              - 'https://s3.amazonaws.com/bucket/imports/...'
                          upload_expires_at:
                            type: string
                            examples:
                              - '2025-01-16T12:00:00+00:00'
                      message:
                        type: string
                        examples:
                          - 'Import retrieved successfully'
                      http_status:
                        type: integer
                        examples:
                          - 200
                    examples:
                      -
                        data:
                          id: 01jfgxk4nqrst5vwx9yz0abcdh
                          vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                          status: pending
                          status_label: Pending
                          scope: null
                          filename: backup.sql.gz
                          content_length: 52428800
                          is_multipart: false
                          part_count: null
                          checksum:
                            provided_md5: d41d8cd98f00b204e9800998ecf8427e
                            s3_etag: null
                          metadata: null
                          options:
                            drop_tables: true
                            disable_foreign_keys: true
                            search_replace: null
                          duration_ms: null
                          error_message: null
                          created_at: '2025-01-15T12:00:00+00:00'
                          uploaded_at: null
                          started_at: null
                          completed_at: null
                          upload_url: 'https://s3.amazonaws.com/bucket/imports/...'
                          upload_expires_at: '2025-01-16T12:00:00+00:00'
                        message: 'Import retrieved successfully'
                        http_status: 200
                  -
                    description: Completed
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdh
                          vector_site_id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcde
                          status:
                            type: string
                            examples:
                              - completed
                          status_label:
                            type: string
                            examples:
                              - Completed
                          scope:
                            type: string
                            examples:
                              - full
                          scope_label:
                            type: string
                            examples:
                              - Full
                          filename:
                            type: string
                            examples:
                              - backup.sql.gz
                          content_length:
                            type: integer
                            examples:
                              - 52428800
                          is_multipart:
                            type: boolean
                            examples:
                              - false
                          part_count:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          checksum:
                            type: object
                            properties:
                              provided_md5:
                                type: string
                                examples:
                                  - d41d8cd98f00b204e9800998ecf8427e
                              s3_etag:
                                type: string
                                examples:
                                  - d41d8cd98f00b204e9800998ecf8427e
                          metadata:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          options:
                            type: object
                            properties:
                              drop_tables:
                                type: boolean
                                examples:
                                  - true
                              disable_foreign_keys:
                                type: boolean
                                examples:
                                  - true
                              search_replace:
                                type:
                                  - string
                                  - 'null'
                                examples:
                                  - null
                          duration_ms:
                            type: integer
                            examples:
                              - 30000
                          error_message:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          created_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          uploaded_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:01+00:00'
                          started_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:02+00:00'
                          completed_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:32+00:00'
                      message:
                        type: string
                        examples:
                          - 'Import retrieved successfully'
                      http_status:
                        type: integer
                        examples:
                          - 200
                    examples:
                      -
                        data:
                          id: 01jfgxk4nqrst5vwx9yz0abcdh
                          vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                          status: completed
                          status_label: Completed
                          scope: full
                          scope_label: Full
                          filename: backup.sql.gz
                          content_length: 52428800
                          is_multipart: false
                          part_count: null
                          checksum:
                            provided_md5: d41d8cd98f00b204e9800998ecf8427e
                            s3_etag: d41d8cd98f00b204e9800998ecf8427e
                          metadata: null
                          options:
                            drop_tables: true
                            disable_foreign_keys: true
                            search_replace: null
                          duration_ms: 30000
                          error_message: null
                          created_at: '2025-01-15T12:00:00+00:00'
                          uploaded_at: '2025-01-15T12:00:01+00:00'
                          started_at: '2025-01-15T12:00:02+00:00'
                          completed_at: '2025-01-15T12:00:32+00:00'
                        message: 'Import retrieved successfully'
                        http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Import not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Import not found'
                    http_status: 404
      tags:
        - Sites
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
      -
        in: path
        name: import
        description: 'The import ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdh
  '/api/v1/vector/sites/{site}/db/exports/{export}':
    get:
      summary: 'Get Export Status'
      operationId: sitesDatabasesGetExportStatus
      description: "Get the current status of a database export operation. If complete and not\nexpired, includes a presigned download URL valid for 1 hour."
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: Completed
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdg
                          vector_site_id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcde
                          status:
                            type: string
                            examples:
                              - completed
                          status_label:
                            type: string
                            examples:
                              - Completed
                          format:
                            type: string
                            examples:
                              - sql
                          size_bytes:
                            type: integer
                            examples:
                              - 52428800
                          duration_ms:
                            type: integer
                            examples:
                              - 30000
                          error_message:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          download_url:
                            type: string
                            examples:
                              - 'https://s3.amazonaws.com/bucket/exports/01jfgxk4nqrst5vwx9yz0abcdg.sql?X-Amz-Expires=3600'
                          download_expires_at:
                            type: string
                            examples:
                              - '2025-01-15T13:00:00+00:00'
                          created_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          started_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:01+00:00'
                          completed_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:31+00:00'
                      message:
                        type: string
                        examples:
                          - 'Export retrieved successfully'
                      http_status:
                        type: integer
                        examples:
                          - 200
                    examples:
                      -
                        data:
                          id: 01jfgxk4nqrst5vwx9yz0abcdg
                          vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                          status: completed
                          status_label: Completed
                          format: sql
                          size_bytes: 52428800
                          duration_ms: 30000
                          error_message: null
                          download_url: 'https://s3.amazonaws.com/bucket/exports/01jfgxk4nqrst5vwx9yz0abcdg.sql?X-Amz-Expires=3600'
                          download_expires_at: '2025-01-15T13:00:00+00:00'
                          created_at: '2025-01-15T12:00:00+00:00'
                          started_at: '2025-01-15T12:00:01+00:00'
                          completed_at: '2025-01-15T12:00:31+00:00'
                        message: 'Export retrieved successfully'
                        http_status: 200
                  -
                    description: Processing
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdg
                          vector_site_id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcde
                          status:
                            type: string
                            examples:
                              - processing
                          status_label:
                            type: string
                            examples:
                              - Processing
                          format:
                            type: string
                            examples:
                              - sql
                          size_bytes:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          duration_ms:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          error_message:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          download_expires_at:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          created_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          started_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:01+00:00'
                          completed_at:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                      message:
                        type: string
                        examples:
                          - 'Export retrieved successfully'
                      http_status:
                        type: integer
                        examples:
                          - 200
                    examples:
                      -
                        data:
                          id: 01jfgxk4nqrst5vwx9yz0abcdg
                          vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                          status: processing
                          status_label: Processing
                          format: sql
                          size_bytes: null
                          duration_ms: null
                          error_message: null
                          download_expires_at: null
                          created_at: '2025-01-15T12:00:00+00:00'
                          started_at: '2025-01-15T12:00:01+00:00'
                          completed_at: null
                        message: 'Export retrieved successfully'
                        http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Export not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Export not found'
                    http_status: 404
      tags:
        - Sites
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
      -
        in: path
        name: export
        description: 'The export ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdg
  '/api/v1/vector/sites/{site}/logs':
    get:
      summary: 'Get Logs'
      operationId: sitesLogsGetLogs
      description: "Retrieves logs for the specified Vector site. Logs are returned in reverse\nchronological order (newest first).\n\nUse the `environment`, `deployment_id`, and `level` filters to narrow down results.\nUse cursor-based pagination for large result sets.\n\nRate limited to 60 queries per hour per account. Query time window is limited to 24 hours."
      parameters:
        -
          in: query
          name: start_time
          description: 'Start time for log query. RFC3339 format or relative (e.g., "now-1h"). Default: now-1h.'
          required: false
          schema:
            type:
              - string
              - 'null'
            description: 'Start time for log query. RFC3339 format or relative (e.g., "now-1h"). Default: now-1h.'
            examples:
              - now-24h
        -
          in: query
          name: end_time
          description: 'End time for log query. RFC3339 format or relative. Default: now.'
          required: false
          schema:
            type:
              - string
              - 'null'
            description: 'End time for log query. RFC3339 format or relative. Default: now.'
            examples:
              - now
        -
          in: query
          name: limit
          description: 'Maximum number of log entries to return (1-1000). Default: 100.'
          required: false
          schema:
            type:
              - integer
              - 'null'
            description: 'Maximum number of log entries to return (1-1000). Default: 100.'
            examples:
              - 500
        -
          in: query
          name: environment
          description: 'The environment name (e.g., prod, staging, dev). Must be an environment that belongs to the site.'
          required: true
          schema:
            type: string
            description: 'The environment name (e.g., prod, staging, dev). Must be an environment that belongs to the site.'
            examples:
              - prod
        -
          in: query
          name: deployment_id
          description: 'Filter by deployment ID.'
          required: false
          schema:
            type:
              - string
              - 'null'
            description: 'Filter by deployment ID.'
            examples:
              - 01jfgxk4nqrst5vwx9yz0abcdh
        -
          in: query
          name: cursor
          description: 'Pagination cursor from previous response.'
          required: false
          schema:
            type:
              - string
              - 'null'
            description: 'Pagination cursor from previous response.'
            examples:
              - abc123xyz
        -
          in: query
          name: level
          description: 'Filter by log level (e.g., error, warning, info).'
          required: false
          schema:
            type: string
            description: 'Filter by log level (e.g., error, warning, info).'
            examples:
              - error
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      logs:
                        type: object
                        properties:
                          tables:
                            type: array
                            items:
                              type: object
                              properties:
                                name:
                                  type: string
                                  examples:
                                    - '0'
                                columns:
                                  type: array
                                  items:
                                    type: object
                                    properties:
                                      name: { type: string, examples: [_time] }
                                      type: { type: string, examples: [datetime] }
                                  examples:
                                    -
                                      - { name: _time, type: datetime }
                                      - { name: message, type: string }
                                      - { name: level, type: string }
                                rows:
                                  type: array
                                  items:
                                    type: array
                                  examples:
                                    -
                                      - ['2025-01-15T12:00:00+00:00', 'Request completed', info]
                            examples:
                              -
                                -
                                  name: '0'
                                  columns:
                                    -
                                      name: _time
                                      type: datetime
                                    -
                                      name: message
                                      type: string
                                    -
                                      name: level
                                      type: string
                                  rows:
                                    -
                                      - '2025-01-15T12:00:00+00:00'
                                      - 'Request completed'
                                      - info
                          status:
                            type: object
                            properties:
                              rowsExamined:
                                type: integer
                                examples:
                                  - 1000
                              rowsMatched:
                                type: integer
                                examples:
                                  - 50
                      cursor:
                        type: string
                        examples:
                          - abc123xyz
                      has_more:
                        type: boolean
                        examples:
                          - true
                  message:
                    type: string
                    examples:
                      - 'Logs retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      logs:
                        tables:
                          -
                            name: '0'
                            columns:
                              -
                                name: _time
                                type: datetime
                              -
                                name: message
                                type: string
                              -
                                name: level
                                type: string
                            rows:
                              -
                                - '2025-01-15T12:00:00+00:00'
                                - 'Request completed'
                                - info
                        status:
                          rowsExamined: 1000
                          rowsMatched: 50
                      cursor: abc123xyz
                      has_more: true
                    message: 'Logs retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: 'Time Window Exceeded'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      time_window:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The query time window cannot exceed 24 hours.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      time_window:
                        - 'The query time window cannot exceed 24 hours.'
                    message: 'Validation failed'
                    http_status: 422
        429:
          description: 'Rate Limit Exceeded'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Too many log queries. Rate limit: 60 per hour.'
                  http_status:
                    type: integer
                    examples:
                      - 429
                examples:
                  -
                    data: {  }
                    message: 'Too many log queries. Rate limit: 60 per hour.'
                    http_status: 429
      tags:
        - Sites
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/waf/allowed-referrers':
    get:
      summary: 'List Allowed Referrers'
      operationId: 'sitesWAF:ReferrersListAllowedReferrers'
      description: 'Retrieves all allowed referrer hostnames for a site.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        hostname:
                          type: string
                          examples:
                            - example.com
                    examples:
                      -
                        -
                          hostname: example.com
                        -
                          hostname: '*.example.net'
                  message:
                    type: string
                    examples:
                      - 'Allowed referrers retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      -
                        hostname: example.com
                      -
                        hostname: '*.example.net'
                    message: 'Allowed referrers retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
      tags:
        - Sites
    post:
      summary: 'Add Allowed Referrer'
      operationId: 'sitesWAF:ReferrersAddAllowedReferrer'
      description: "Adds a hostname to the allowed referrers list.\nWildcards are supported (e.g., *.example.com)."
      parameters: []
      responses:
        201:
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      hostname:
                        type: string
                        examples:
                          - example.com
                  message:
                    type: string
                    examples:
                      - 'Allowed referrer added successfully'
                  http_status:
                    type: integer
                    examples:
                      - 201
                examples:
                  -
                    data:
                      hostname: example.com
                    message: 'Allowed referrer added successfully'
                    http_status: 201
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      hostname:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The hostname field is required.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      hostname:
                        - 'The hostname field is required.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Sites
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                hostname:
                  type: string
                  description: 'The hostname to allow.'
                  examples:
                    - example.com
              required:
                - hostname
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/waf/blocked-referrers':
    get:
      summary: 'List Blocked Referrers'
      operationId: 'sitesWAF:ReferrersListBlockedReferrers'
      description: 'Retrieves all blocked referrer hostnames for a site.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        hostname:
                          type: string
                          examples:
                            - spam.example.com
                    examples:
                      -
                        -
                          hostname: spam.example.com
                        -
                          hostname: '*.example.net'
                  message:
                    type: string
                    examples:
                      - 'Blocked referrers retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      -
                        hostname: spam.example.com
                      -
                        hostname: '*.example.net'
                    message: 'Blocked referrers retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
      tags:
        - Sites
    post:
      summary: 'Add Blocked Referrer'
      operationId: 'sitesWAF:ReferrersAddBlockedReferrer'
      description: "Adds a hostname to the blocked referrers list.\nWildcards are supported (e.g., *.example.com)."
      parameters: []
      responses:
        201:
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      hostname:
                        type: string
                        examples:
                          - spam.example.com
                  message:
                    type: string
                    examples:
                      - 'Blocked referrer added successfully'
                  http_status:
                    type: integer
                    examples:
                      - 201
                examples:
                  -
                    data:
                      hostname: spam.example.com
                    message: 'Blocked referrer added successfully'
                    http_status: 201
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      hostname:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The hostname field is required.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      hostname:
                        - 'The hostname field is required.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Sites
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                hostname:
                  type: string
                  description: 'The hostname to block.'
                  examples:
                    - spam.example.com
              required:
                - hostname
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/waf/blocked-ips':
    get:
      summary: 'List Blocked IPs'
      operationId: 'sitesWAF:BlockedIPsListBlockedIPs'
      description: 'Retrieves all blocked IP addresses for a site.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        ip:
                          type: string
                          examples:
                            - 192.0.2.1
                    examples:
                      -
                        -
                          ip: 192.0.2.1
                        -
                          ip: 198.51.100.0/24
                  message:
                    type: string
                    examples:
                      - 'Blocked IPs retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      -
                        ip: 192.0.2.1
                      -
                        ip: 198.51.100.0/24
                    message: 'Blocked IPs retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
      tags:
        - Sites
    post:
      summary: 'Add Blocked IP'
      operationId: 'sitesWAF:BlockedIPsAddBlockedIP'
      description: "Adds an IP address to the blocked list.\nSupports both IPv4 and IPv6 addresses."
      parameters: []
      responses:
        201:
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      ip:
                        type: string
                        examples:
                          - 192.0.2.1
                  message:
                    type: string
                    examples:
                      - 'Blocked IP added successfully'
                  http_status:
                    type: integer
                    examples:
                      - 201
                examples:
                  -
                    data:
                      ip: 192.0.2.1
                    message: 'Blocked IP added successfully'
                    http_status: 201
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      ip:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The ip field is required.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      ip:
                        - 'The ip field is required.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Sites
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                ip:
                  type: string
                  description: 'The IP address to block.'
                  examples:
                    - 192.0.2.1
              required:
                - ip
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/waf/rate-limits':
    get:
      summary: 'List Rate Limits'
      operationId: 'sitesWAF:RateLimitsListRateLimits'
      description: 'Retrieves all rate limit rules configured for a site.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          examples:
                            - 12345
                        name:
                          type: string
                          examples:
                            - 'API Rate Limit'
                        description:
                          type: string
                          examples:
                            - 'Limit API requests to 100/second'
                        shield_zone_id:
                          type: integer
                          examples:
                            - 67890
                        configuration:
                          type: object
                          properties:
                            request_count:
                              type: integer
                              examples:
                                - 100
                            timeframe:
                              type: integer
                              examples:
                                - 1
                            block_time:
                              type: integer
                              examples:
                                - 60
                            value:
                              type: string
                              examples:
                                - '/api/*'
                            action:
                              type: string
                              examples:
                                - rate-limit
                            operator:
                              type: string
                              examples:
                                - begins-with
                            variables:
                              type: array
                              items:
                                type: string
                              examples:
                                -
                                  - request-uri
                            transformations:
                              type: array
                              items:
                                type: string
                              examples:
                                -
                                  - lowercase
                    examples:
                      -
                        -
                          id: 12345
                          name: 'API Rate Limit'
                          description: 'Limit API requests to 100/second'
                          shield_zone_id: 67890
                          configuration:
                            request_count: 100
                            timeframe: 1
                            block_time: 60
                            value: '/api/*'
                            action: rate-limit
                            operator: begins-with
                            variables:
                              - request-uri
                            transformations:
                              - lowercase
                  message:
                    type: string
                    examples:
                      - 'Rate limits retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      -
                        id: 12345
                        name: 'API Rate Limit'
                        description: 'Limit API requests to 100/second'
                        shield_zone_id: 67890
                        configuration:
                          request_count: 100
                          timeframe: 1
                          block_time: 60
                          value: '/api/*'
                          action: rate-limit
                          operator: begins-with
                          variables:
                            - request-uri
                          transformations:
                            - lowercase
                    message: 'Rate limits retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
      tags:
        - Sites
    post:
      summary: 'Create Rate Limit'
      operationId: 'sitesWAF:RateLimitsCreateRateLimit'
      description: 'Creates a new rate limit rule for a site. Maximum 25 rate limit rules per zone.'
      parameters: []
      responses:
        201:
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        examples:
                          - 12345
                      name:
                        type: string
                        examples:
                          - 'API Rate Limit'
                      description:
                        type: string
                        examples:
                          - 'Limit API requests to prevent abuse'
                      shield_zone_id:
                        type: integer
                        examples:
                          - 67890
                      configuration:
                        type: object
                        properties:
                          request_count:
                            type: integer
                            examples:
                              - 100
                          timeframe:
                            type: integer
                            examples:
                              - 1
                          block_time:
                            type: integer
                            examples:
                              - 60
                          value:
                            type: string
                            examples:
                              - '/api/*'
                          action:
                            type: string
                            examples:
                              - rate-limit
                          operator:
                            type: string
                            examples:
                              - begins-with
                          variables:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - request-uri
                          transformations:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - lowercase
                                - url-decode
                  message:
                    type: string
                    examples:
                      - 'Rate limit created successfully'
                  http_status:
                    type: integer
                    examples:
                      - 201
                examples:
                  -
                    data:
                      id: 12345
                      name: 'API Rate Limit'
                      description: 'Limit API requests to prevent abuse'
                      shield_zone_id: 67890
                      configuration:
                        request_count: 100
                        timeframe: 1
                        block_time: 60
                        value: '/api/*'
                        action: rate-limit
                        operator: begins-with
                        variables:
                          - request-uri
                        transformations:
                          - lowercase
                          - url-decode
                    message: 'Rate limit created successfully'
                    http_status: 201
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Validation Error'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      errors:
                        type: object
                        properties:
                          timeframe:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - 'The timeframe field must be a valid enum value.'
                          block_time:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - 'The block duration field must be a valid enum value.'
                      message:
                        type: string
                        examples:
                          - 'Validation failed'
                      http_status:
                        type: integer
                        examples:
                          - 422
                    examples:
                      -
                        data: {  }
                        errors:
                          timeframe:
                            - 'The timeframe field must be a valid enum value.'
                          block_time:
                            - 'The block duration field must be a valid enum value.'
                        message: 'Validation failed'
                        http_status: 422
                  -
                    description: 'Limit Reached'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      message:
                        type: string
                        examples:
                          - 'Rate limit rule limit reached (25 rules per zone)'
                      http_status:
                        type: integer
                        examples:
                          - 422
                    examples:
                      -
                        data: {  }
                        message: 'Rate limit rule limit reached (25 rules per zone)'
                        http_status: 422
      tags:
        - Sites
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'The rule name (max 255 characters).'
                  examples:
                    - 'API Rate Limit'
                description:
                  type:
                    - string
                    - 'null'
                  description: 'The rule description (max 1000 characters).'
                  examples:
                    - 'Limit API requests to prevent abuse'
                request_count:
                  type: integer
                  description: 'Number of requests allowed within the timeframe. Must be between 1 and 1,000,000.'
                  examples:
                    - 100
                timeframe:
                  type: integer
                  description: 'Time window for counting requests. Must be exactly 1 (per second) or 10 (per 10 seconds).'
                  examples:
                    - 1
                block_time:
                  type: integer
                  description: 'Duration to block clients who exceed the limit, in seconds. Must be one of: 30, 60, 300, 900, 1800, 3600.'
                  examples:
                    - 60
                value:
                  type:
                    - string
                    - 'null'
                  description: 'URL path or pattern to match against. Max 2048 characters.'
                  examples:
                    - '/api/*'
                operator:
                  type:
                    - string
                    - 'null'
                  description: 'Match operator for comparing against the value. Must be one of: begins-with, ends-with, contains, contains-word, str-match, eq, ge, gt, le, lt, within, regex, str-eq, detect-sqli, detect-xss.'
                  examples:
                    - begins-with
                transformations:
                  type: array
                  description: 'Transformations to apply to variable values before matching. Each must be one of: cmdline, compress-whitespace, css-decode, hex-encode, html-entity-decode, js-decode, length, lowercase, md5, normalize-path, normalise-path, normalize-path-win, normalise-path-win, remove-comments, remove-nulls, remove-whitespace, replace-comments, sha1, url-decode, url-decode-uni, utf8-to-unicode.'
                  items:
                    type: string
                  examples:
                    -
                      - lowercase
                      - url-decode
                variables:
                  type: array
                  description: 'Request variables to inspect when matching. Each must be one of: request-uri, request-uri-raw, args, args-combined-size, args-get, args-get-names, args-post, args-post-names, files-names, geo, remote-addr, query-string, request-basename, request-body, request-cookies-names, request-cookies, request-filename, request-headers-names, request-headers, request-line, request-method, request-protocol, response-body, response-headers, response-status.'
                  items:
                    type: string
                  examples:
                    -
                      - request-uri
              required:
                - name
                - request_count
                - timeframe
                - block_time
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/waf/rate-limits/{rule}':
    get:
      summary: 'Get Rate Limit'
      operationId: 'sitesWAF:RateLimitsGetRateLimit'
      description: 'Retrieves a specific rate limit rule by ID.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        examples:
                          - 12345
                      name:
                        type: string
                        examples:
                          - 'API Rate Limit'
                      description:
                        type: string
                        examples:
                          - 'Limit API requests to 100/second'
                      shield_zone_id:
                        type: integer
                        examples:
                          - 67890
                      configuration:
                        type: object
                        properties:
                          request_count:
                            type: integer
                            examples:
                              - 100
                          timeframe:
                            type: integer
                            examples:
                              - 1
                          block_time:
                            type: integer
                            examples:
                              - 60
                          value:
                            type: string
                            examples:
                              - '/api/*'
                          action:
                            type: string
                            examples:
                              - rate-limit
                          operator:
                            type: string
                            examples:
                              - begins-with
                          variables:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - request-uri
                          transformations:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - lowercase
                  message:
                    type: string
                    examples:
                      - 'Rate limit retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 12345
                      name: 'API Rate Limit'
                      description: 'Limit API requests to 100/second'
                      shield_zone_id: 67890
                      configuration:
                        request_count: 100
                        timeframe: 1
                        block_time: 60
                        value: '/api/*'
                        action: rate-limit
                        operator: begins-with
                        variables:
                          - request-uri
                        transformations:
                          - lowercase
                    message: 'Rate limit retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Not Found'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      message:
                        type: string
                        examples:
                          - 'Rate limit not found'
                      http_status:
                        type: integer
                        examples:
                          - 404
                    examples:
                      -
                        data: {  }
                        message: 'Rate limit not found'
                        http_status: 404
                  -
                    description: 'Site Not Found'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      message:
                        type: string
                        examples:
                          - 'Site not found'
                      http_status:
                        type: integer
                        examples:
                          - 404
                    examples:
                      -
                        data: {  }
                        message: 'Site not found'
                        http_status: 404
      tags:
        - Sites
    put:
      summary: 'Update Rate Limit'
      operationId: 'sitesWAF:RateLimitsUpdateRateLimit'
      description: "Updates an existing rate limit rule. All fields are optional - only include fields you want\nto change. Omitted fields retain their current values."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        examples:
                          - 12345
                      name:
                        type: string
                        examples:
                          - 'Updated Rate Limit'
                      description:
                        type: string
                        examples:
                          - 'Updated description for the rule'
                      shield_zone_id:
                        type: integer
                        examples:
                          - 67890
                      configuration:
                        type: object
                        properties:
                          request_count:
                            type: integer
                            examples:
                              - 200
                          timeframe:
                            type: integer
                            examples:
                              - 10
                          block_time:
                            type: integer
                            examples:
                              - 300
                          value:
                            type: string
                            examples:
                              - '/api/v2/*'
                          action:
                            type: string
                            examples:
                              - rate-limit
                          operator:
                            type: string
                            examples:
                              - regex
                          variables:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - request-uri
                                - query-string
                          transformations:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - lowercase
                  message:
                    type: string
                    examples:
                      - 'Rate limit updated successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 12345
                      name: 'Updated Rate Limit'
                      description: 'Updated description for the rule'
                      shield_zone_id: 67890
                      configuration:
                        request_count: 200
                        timeframe: 10
                        block_time: 300
                        value: '/api/v2/*'
                        action: rate-limit
                        operator: regex
                        variables:
                          - request-uri
                          - query-string
                        transformations:
                          - lowercase
                    message: 'Rate limit updated successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Not Found'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      message:
                        type: string
                        examples:
                          - 'Rate limit not found'
                      http_status:
                        type: integer
                        examples:
                          - 404
                    examples:
                      -
                        data: {  }
                        message: 'Rate limit not found'
                        http_status: 404
                  -
                    description: 'Site Not Found'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      message:
                        type: string
                        examples:
                          - 'Site not found'
                      http_status:
                        type: integer
                        examples:
                          - 404
                    examples:
                      -
                        data: {  }
                        message: 'Site not found'
                        http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      operator:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The match operator field must be a valid enum value.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      operator:
                        - 'The match operator field must be a valid enum value.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Sites
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'The rule name (max 255 characters).'
                  examples:
                    - 'Updated Rate Limit'
                description:
                  type:
                    - string
                    - 'null'
                  description: 'The rule description (max 1000 characters).'
                  examples:
                    - 'Updated description for the rule'
                request_count:
                  type: integer
                  description: 'Number of requests allowed within the timeframe. Must be between 1 and 1,000,000.'
                  examples:
                    - 200
                timeframe:
                  type: integer
                  description: 'Time window for counting requests. Must be exactly 1 (per second) or 10 (per 10 seconds).'
                  examples:
                    - 10
                block_time:
                  type: integer
                  description: 'Duration to block clients who exceed the limit, in seconds. Must be one of: 30, 60, 300, 900, 1800, 3600.'
                  examples:
                    - 300
                value:
                  type:
                    - string
                    - 'null'
                  description: 'URL path or pattern to match against. Max 2048 characters.'
                  examples:
                    - '/api/v2/*'
                operator:
                  type:
                    - string
                    - 'null'
                  description: 'Match operator for comparing against the value. Must be one of: begins-with, ends-with, contains, contains-word, str-match, eq, ge, gt, le, lt, within, regex, str-eq, detect-sqli, detect-xss.'
                  examples:
                    - regex
                transformations:
                  type: array
                  description: 'Transformations to apply to variable values before matching. Each must be one of: cmdline, compress-whitespace, css-decode, hex-encode, html-entity-decode, js-decode, length, lowercase, md5, normalize-path, normalise-path, normalize-path-win, normalise-path-win, remove-comments, remove-nulls, remove-whitespace, replace-comments, sha1, url-decode, url-decode-uni, utf8-to-unicode.'
                  items:
                    type: string
                  examples:
                    -
                      - lowercase
                variables:
                  type: array
                  description: 'Request variables to inspect when matching. Each must be one of: request-uri, request-uri-raw, args, args-combined-size, args-get, args-get-names, args-post, args-post-names, files-names, geo, remote-addr, query-string, request-basename, request-body, request-cookies-names, request-cookies, request-filename, request-headers-names, request-headers, request-line, request-method, request-protocol, response-body, response-headers, response-status.'
                  items:
                    type: string
                  examples:
                    -
                      - request-uri
                      - query-string
    delete:
      summary: 'Delete Rate Limit'
      operationId: 'sitesWAF:RateLimitsDeleteRateLimit'
      description: 'Permanently deletes a rate limit rule. This action cannot be undone.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Rate limit deleted successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data: {  }
                    message: 'Rate limit deleted successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Not Found'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      message:
                        type: string
                        examples:
                          - 'Rate limit not found'
                      http_status:
                        type: integer
                        examples:
                          - 404
                    examples:
                      -
                        data: {  }
                        message: 'Rate limit not found'
                        http_status: 404
                  -
                    description: 'Site Not Found'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      message:
                        type: string
                        examples:
                          - 'Site not found'
                      http_status:
                        type: integer
                        examples:
                          - 404
                    examples:
                      -
                        data: {  }
                        message: 'Site not found'
                        http_status: 404
      tags:
        - Sites
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
      -
        in: path
        name: rule
        description: 'The rate limit rule ID.'
        required: true
        schema:
          type: integer
          examples:
            - 12345
  '/api/v1/vector/sites/{site}/cdn/caching':
    get:
      summary: 'Get Caching Settings'
      operationId: 'sitesCDN:CachingGetCachingSettings'
      description: 'Retrieves the current CDN caching configuration for a site.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      enable_smart_cache:
                        type: boolean
                        examples:
                          - true
                      cache_control_max_age_override:
                        type: integer
                        examples:
                          - 2592000
                      cache_control_public_max_age_override:
                        type: integer
                        examples:
                          - 0
                      disable_cookies:
                        type: boolean
                        examples:
                          - true
                      cache_error_responses:
                        type: boolean
                        examples:
                          - false
                      enable_query_string_ordering:
                        type: boolean
                        examples:
                          - true
                      ignore_query_strings:
                        type: boolean
                        examples:
                          - false
                      query_string_vary_parameters:
                        type: array
                        examples:
                          - []
                      enable_hostname_vary:
                        type: boolean
                        examples:
                          - false
                      enable_mobile_vary:
                        type: boolean
                        examples:
                          - false
                      enable_webp_vary:
                        type: boolean
                        examples:
                          - true
                      enable_avif_vary:
                        type: boolean
                        examples:
                          - true
                      enable_country_code_vary:
                        type: boolean
                        examples:
                          - false
                      enable_cookie_vary:
                        type: boolean
                        examples:
                          - false
                      cookie_vary_parameters:
                        type: array
                        examples:
                          - []
                      enable_origin_shield:
                        type: boolean
                        examples:
                          - false
                      origin_shield_zone_code:
                        type: string
                        examples:
                          - ''
                      origin_shield_enable_concurrency_limit:
                        type: boolean
                        examples:
                          - false
                      origin_shield_max_concurrent_requests:
                        type: integer
                        examples:
                          - 5000
                      origin_shield_queue_max_wait_time:
                        type: integer
                        examples:
                          - 30
                      origin_shield_max_queued_requests:
                        type: integer
                        examples:
                          - 1000
                      enable_request_coalescing:
                        type: boolean
                        examples:
                          - false
                      request_coalescing_timeout:
                        type: integer
                        examples:
                          - 30
                      use_stale_while_updating:
                        type: boolean
                        examples:
                          - true
                      use_stale_while_offline:
                        type: boolean
                        examples:
                          - true
                      use_background_update:
                        type: boolean
                        examples:
                          - true
                      enable_cache_slice:
                        type: boolean
                        examples:
                          - false
                  message:
                    type: string
                    examples:
                      - 'Caching settings retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      enable_smart_cache: true
                      cache_control_max_age_override: 2592000
                      cache_control_public_max_age_override: 0
                      disable_cookies: true
                      cache_error_responses: false
                      enable_query_string_ordering: true
                      ignore_query_strings: false
                      query_string_vary_parameters: []
                      enable_hostname_vary: false
                      enable_mobile_vary: false
                      enable_webp_vary: true
                      enable_avif_vary: true
                      enable_country_code_vary: false
                      enable_cookie_vary: false
                      cookie_vary_parameters: []
                      enable_origin_shield: false
                      origin_shield_zone_code: ''
                      origin_shield_enable_concurrency_limit: false
                      origin_shield_max_concurrent_requests: 5000
                      origin_shield_queue_max_wait_time: 30
                      origin_shield_max_queued_requests: 1000
                      enable_request_coalescing: false
                      request_coalescing_timeout: 30
                      use_stale_while_updating: true
                      use_stale_while_offline: true
                      use_background_update: true
                      enable_cache_slice: false
                    message: 'Caching settings retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
      tags:
        - Sites
    put:
      summary: 'Update Caching Settings'
      operationId: 'sitesCDN:CachingUpdateCachingSettings'
      description: "Updates CDN caching configuration for a site. All fields are optional — only include\nfields you want to change. Omitted fields retain their current values."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      enable_smart_cache:
                        type: boolean
                        examples:
                          - true
                      cache_control_max_age_override:
                        type: integer
                        examples:
                          - 2592000
                      disable_cookies:
                        type: boolean
                        examples:
                          - true
                  message:
                    type: string
                    examples:
                      - 'Caching settings updated successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      enable_smart_cache: true
                      cache_control_max_age_override: 2592000
                      disable_cookies: true
                    message: 'Caching settings updated successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      origin_shield_max_concurrent_requests:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The max concurrent requests must not exceed 10,000.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      origin_shield_max_concurrent_requests:
                        - 'The max concurrent requests must not exceed 10,000.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Sites
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                enable_smart_cache:
                  type: boolean
                  description: 'Enable smart cache.'
                  examples:
                    - true
                cache_control_max_age_override:
                  type: integer
                  description: 'Server cache expiration in seconds. Use -1 to respect origin headers.'
                  examples:
                    - 2592000
                cache_control_public_max_age_override:
                  type: integer
                  description: 'Browser cache expiration in seconds.'
                  examples:
                    - 0
                disable_cookies:
                  type: boolean
                  description: 'Automatically strip cookies from responses.'
                  examples:
                    - true
                cache_error_responses:
                  type: boolean
                  description: 'Cache error responses from origin.'
                  examples:
                    - false
                enable_query_string_ordering:
                  type: boolean
                  description: 'Sort query string parameters for better cache hit rates.'
                  examples:
                    - true
                ignore_query_strings:
                  type: boolean
                  description: 'Ignore query strings when serving cached objects.'
                  examples:
                    - false
                query_string_vary_parameters:
                  type: array
                  description: 'Query string parameters to vary cache by.'
                  items:
                    type: string
                  examples:
                    -
                      - utm_source
                      - ref
                enable_hostname_vary:
                  type: boolean
                  description: 'Vary cache by hostname.'
                  examples:
                    - false
                enable_mobile_vary:
                  type: boolean
                  description: 'Vary cache by device type (mobile/desktop).'
                  examples:
                    - false
                enable_webp_vary:
                  type: boolean
                  description: 'Vary cache by WebP support.'
                  examples:
                    - true
                enable_avif_vary:
                  type: boolean
                  description: 'Vary cache by AVIF support.'
                  examples:
                    - true
                enable_country_code_vary:
                  type: boolean
                  description: 'Vary cache by country code.'
                  examples:
                    - false
                enable_cookie_vary:
                  type: boolean
                  description: 'Vary cache by cookie values.'
                  examples:
                    - false
                cookie_vary_parameters:
                  type: array
                  description: 'Cookie names to vary cache by.'
                  items:
                    type: string
                  examples:
                    -
                      - wordpress_logged_in
                enable_origin_shield:
                  type: boolean
                  description: 'Enable origin shield.'
                  examples:
                    - false
                origin_shield_zone_code:
                  type: string
                  description: 'Origin shield zone code (e.g., "FR", "NY").'
                  examples:
                    - FR
                origin_shield_enable_concurrency_limit:
                  type: boolean
                  description: 'Enable origin shield concurrency limit.'
                  examples:
                    - false
                origin_shield_max_concurrent_requests:
                  type: integer
                  description: 'Max concurrent requests to origin (1-10000).'
                  examples:
                    - 5000
                origin_shield_queue_max_wait_time:
                  type: integer
                  description: 'Max queue wait time in seconds.'
                  examples:
                    - 30
                origin_shield_max_queued_requests:
                  type: integer
                  description: 'Max queued origin requests (0-30000).'
                  examples:
                    - 1000
                enable_request_coalescing:
                  type: boolean
                  description: 'Enable request coalescing.'
                  examples:
                    - false
                request_coalescing_timeout:
                  type: integer
                  description: 'Request coalescing lock time in seconds.'
                  examples:
                    - 30
                use_stale_while_updating:
                  type: boolean
                  description: 'Serve stale content while cache is updating.'
                  examples:
                    - true
                use_stale_while_offline:
                  type: boolean
                  description: 'Serve stale content while origin is offline.'
                  examples:
                    - true
                use_background_update:
                  type: boolean
                  description: 'Update cache in background.'
                  examples:
                    - true
                enable_cache_slice:
                  type: boolean
                  description: 'Enable cache slicing (optimize for video).'
                  examples:
                    - false
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/cdn/optimizer':
    get:
      summary: 'Get Optimizer Settings'
      operationId: 'sitesCDN:OptimizerGetOptimizerSettings'
      description: 'Retrieves the current CDN optimizer configuration for a site.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      optimizer_enabled:
                        type: boolean
                        examples:
                          - true
                      optimizer_enable_webp:
                        type: boolean
                        examples:
                          - true
                      optimizer_automatic_optimization_enabled:
                        type: boolean
                        examples:
                          - true
                      optimizer_enable_manipulation_engine:
                        type: boolean
                        examples:
                          - false
                      optimizer_watermark_enabled:
                        type: boolean
                        examples:
                          - false
                      optimizer_minify_css:
                        type: boolean
                        examples:
                          - true
                      optimizer_minify_javascript:
                        type: boolean
                        examples:
                          - true
                      optimizer_image_quality:
                        type: integer
                        examples:
                          - 85
                      optimizer_mobile_image_quality:
                        type: integer
                        examples:
                          - 70
                      optimizer_desktop_max_width:
                        type: integer
                        examples:
                          - 1600
                      optimizer_mobile_max_width:
                        type: integer
                        examples:
                          - 800
                  message:
                    type: string
                    examples:
                      - 'Optimizer settings retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      optimizer_enabled: true
                      optimizer_enable_webp: true
                      optimizer_automatic_optimization_enabled: true
                      optimizer_enable_manipulation_engine: false
                      optimizer_watermark_enabled: false
                      optimizer_minify_css: true
                      optimizer_minify_javascript: true
                      optimizer_image_quality: 85
                      optimizer_mobile_image_quality: 70
                      optimizer_desktop_max_width: 1600
                      optimizer_mobile_max_width: 800
                    message: 'Optimizer settings retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
      tags:
        - Sites
    put:
      summary: 'Update Optimizer Settings'
      operationId: 'sitesCDN:OptimizerUpdateOptimizerSettings'
      description: "Updates CDN optimizer configuration for a site. All fields are optional — only include\nfields you want to change. Omitted fields retain their current values."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      optimizer_enabled:
                        type: boolean
                        examples:
                          - true
                      optimizer_minify_css:
                        type: boolean
                        examples:
                          - true
                      optimizer_image_quality:
                        type: integer
                        examples:
                          - 85
                  message:
                    type: string
                    examples:
                      - 'Optimizer settings updated successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      optimizer_enabled: true
                      optimizer_minify_css: true
                      optimizer_image_quality: 85
                    message: 'Optimizer settings updated successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      optimizer_image_quality:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The image quality must not exceed 100.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      optimizer_image_quality:
                        - 'The image quality must not exceed 100.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Sites
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                optimizer_enabled:
                  type: boolean
                  description: 'Enable Bunny Optimizer.'
                  examples:
                    - true
                optimizer_enable_webp:
                  type: boolean
                  description: 'Enable WebP image compression.'
                  examples:
                    - true
                optimizer_automatic_optimization_enabled:
                  type: boolean
                  description: 'Enable automatic smart image optimization.'
                  examples:
                    - true
                optimizer_enable_manipulation_engine:
                  type: boolean
                  description: 'Enable dynamic image processing engine.'
                  examples:
                    - false
                optimizer_watermark_enabled:
                  type: boolean
                  description: 'Enable image watermarking.'
                  examples:
                    - false
                optimizer_minify_css:
                  type: boolean
                  description: 'Enable CSS minification.'
                  examples:
                    - true
                optimizer_minify_javascript:
                  type: boolean
                  description: 'Enable JavaScript minification.'
                  examples:
                    - true
                optimizer_image_quality:
                  type: integer
                  description: 'Desktop image quality (1-100).'
                  examples:
                    - 85
                optimizer_mobile_image_quality:
                  type: integer
                  description: 'Mobile image quality (1-100).'
                  examples:
                    - 70
                optimizer_desktop_max_width:
                  type: integer
                  description: 'Max automatic image width for desktop (0-5000).'
                  examples:
                    - 1600
                optimizer_mobile_max_width:
                  type: integer
                  description: 'Max automatic image width for mobile (0-5000).'
                  examples:
                    - 800
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/cdn/edge-rules':
    get:
      summary: 'List Edge Rules'
      operationId: 'sitesCDN:EdgeRulesListEdgeRules'
      description: 'Retrieves all edge rules configured for a site.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        guid:
                          type: string
                          examples:
                            - a1b2c3d4-e5f6-7890-abcd-ef1234567890
                        description:
                          type: string
                          examples:
                            - 'Force SSL'
                        enabled:
                          type: boolean
                          examples:
                            - true
                        action_type:
                          type: string
                          examples:
                            - force-ssl
                        action_parameter_1:
                          type:
                            - string
                            - 'null'
                          examples:
                            - null
                        action_parameter_2:
                          type:
                            - string
                            - 'null'
                          examples:
                            - null
                        trigger_matching_type:
                          type: string
                          examples:
                            - match-any
                        triggers:
                          type: array
                          items:
                            type: object
                            properties:
                              type:
                                type: string
                                examples:
                                  - url
                              pattern_matching_type:
                                type: string
                                examples:
                                  - match-any
                              pattern_matches:
                                type: array
                                items:
                                  type: string
                                examples:
                                  -
                                    - '*'
                              parameter_1:
                                type:
                                  - string
                                  - 'null'
                                examples:
                                  - null
                          examples:
                            -
                              -
                                type: url
                                pattern_matching_type: match-any
                                pattern_matches:
                                  - '*'
                                parameter_1: null
                        extra_actions:
                          type: array
                          examples:
                            - []
                    examples:
                      -
                        -
                          guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890
                          description: 'Force SSL'
                          enabled: true
                          action_type: force-ssl
                          action_parameter_1: null
                          action_parameter_2: null
                          trigger_matching_type: match-any
                          triggers:
                            -
                              type: url
                              pattern_matching_type: match-any
                              pattern_matches:
                                - '*'
                              parameter_1: null
                          extra_actions: []
                  message:
                    type: string
                    examples:
                      - 'Edge rules retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      -
                        guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890
                        description: 'Force SSL'
                        enabled: true
                        action_type: force-ssl
                        action_parameter_1: null
                        action_parameter_2: null
                        trigger_matching_type: match-any
                        triggers:
                          -
                            type: url
                            pattern_matching_type: match-any
                            pattern_matches:
                              - '*'
                            parameter_1: null
                        extra_actions: []
                    message: 'Edge rules retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
      tags:
        - Sites
    post:
      summary: 'Create Edge Rule'
      operationId: 'sitesCDN:EdgeRulesCreateEdgeRule'
      description: 'Creates a new edge rule for a site.'
      parameters: []
      responses:
        201:
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      guid:
                        type: string
                        examples:
                          - a1b2c3d4-e5f6-7890-abcd-ef1234567890
                      description:
                        type: string
                        examples:
                          - 'Force SSL on all requests'
                      enabled:
                        type: boolean
                        examples:
                          - true
                      action_type:
                        type: string
                        examples:
                          - force-ssl
                      action_parameter_1:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      action_parameter_2:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      trigger_matching_type:
                        type: string
                        examples:
                          - match-any
                      triggers:
                        type: array
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              examples:
                                - url
                            pattern_matching_type:
                              type: string
                              examples:
                                - match-any
                            pattern_matches:
                              type: array
                              items:
                                type: string
                              examples:
                                -
                                  - '*'
                            parameter_1:
                              type:
                                - string
                                - 'null'
                              examples:
                                - null
                        examples:
                          -
                            -
                              type: url
                              pattern_matching_type: match-any
                              pattern_matches:
                                - '*'
                              parameter_1: null
                      extra_actions:
                        type: array
                        examples:
                          - []
                  message:
                    type: string
                    examples:
                      - 'Edge rule created successfully'
                  http_status:
                    type: integer
                    examples:
                      - 201
                examples:
                  -
                    data:
                      guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890
                      description: 'Force SSL on all requests'
                      enabled: true
                      action_type: force-ssl
                      action_parameter_1: null
                      action_parameter_2: null
                      trigger_matching_type: match-any
                      triggers:
                        -
                          type: url
                          pattern_matching_type: match-any
                          pattern_matches:
                            - '*'
                          parameter_1: null
                      extra_actions: []
                    message: 'Edge rule created successfully'
                    http_status: 201
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      action_type:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The action type must be a valid edge rule action type.'
                      triggers:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The triggers field is required.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      action_type:
                        - 'The action type must be a valid edge rule action type.'
                      triggers:
                        - 'The triggers field is required.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Sites
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                description:
                  type: string
                  description: 'The rule description (max 255 characters).'
                  examples:
                    - 'Force SSL on all requests'
                enabled:
                  type: boolean
                  description: 'Whether the rule is enabled. Defaults to true.'
                  examples:
                    - true
                action_type:
                  type: string
                  description: 'The primary action type. Must be a valid edge rule action type (e.g., force-ssl, redirect, set-response-header, block-request, override-cache-time).'
                  examples:
                    - force-ssl
                action_parameter_1:
                  type:
                    - string
                    - 'null'
                  description: 'Action parameter 1 (usage depends on action type).'
                  examples:
                    - 'https://example.com/'
                action_parameter_2:
                  type:
                    - string
                    - 'null'
                  description: 'Action parameter 2 (usage depends on action type).'
                  examples:
                    - architecto
                trigger_matching_type:
                  type: string
                  description: 'How triggers are combined. Must be match-any, match-all, or match-none.'
                  examples:
                    - match-any
                triggers:
                  type: array
                  description: 'At least one trigger condition.'
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        description: 'The trigger type.'
                        examples:
                          - url
                      pattern_matching_type:
                        type: string
                        description: 'How patterns are matched.'
                        examples:
                          - match-any
                      pattern_matches:
                        type: array
                        description: 'Patterns to match against.'
                        items:
                          type: string
                        examples:
                          -
                            - '*'
                      parameter_1:
                        type:
                          - string
                          - 'null'
                        description: 'Optional trigger parameter.'
                        examples:
                          - architecto
                    required:
                      - type
                      - pattern_matching_type
                      - pattern_matches
                  examples:
                    -
                      -
                        type: url
                        pattern_matching_type: match-any
                        pattern_matches:
                          - '*'
                extra_actions:
                  type: array
                  description: 'Additional actions to perform.'
                  items:
                    type: object
                    properties:
                      action_type:
                        type: string
                        description: 'The extra action type.'
                        examples:
                          - set-response-header
                      action_parameter_1:
                        type:
                          - string
                          - 'null'
                        description: 'Action parameter 1.'
                        examples:
                          - X-Custom-Header
                      action_parameter_2:
                        type:
                          - string
                          - 'null'
                        description: 'Action parameter 2.'
                        examples:
                          - custom-value
                    required:
                      - action_type
                  examples:
                    -
                      - []
              required:
                - description
                - action_type
                - trigger_matching_type
                - triggers
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/cdn/edge-rules/{rule}':
    get:
      summary: 'Get Edge Rule'
      operationId: 'sitesCDN:EdgeRulesGetEdgeRule'
      description: 'Retrieves a specific edge rule by GUID.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      guid:
                        type: string
                        examples:
                          - a1b2c3d4-e5f6-7890-abcd-ef1234567890
                      description:
                        type: string
                        examples:
                          - 'Force SSL'
                      enabled:
                        type: boolean
                        examples:
                          - true
                      action_type:
                        type: string
                        examples:
                          - force-ssl
                      action_parameter_1:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      action_parameter_2:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      trigger_matching_type:
                        type: string
                        examples:
                          - match-any
                      triggers:
                        type: array
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              examples:
                                - url
                            pattern_matching_type:
                              type: string
                              examples:
                                - match-any
                            pattern_matches:
                              type: array
                              items:
                                type: string
                              examples:
                                -
                                  - '*'
                            parameter_1:
                              type:
                                - string
                                - 'null'
                              examples:
                                - null
                        examples:
                          -
                            -
                              type: url
                              pattern_matching_type: match-any
                              pattern_matches:
                                - '*'
                              parameter_1: null
                      extra_actions:
                        type: array
                        examples:
                          - []
                  message:
                    type: string
                    examples:
                      - 'Edge rule retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890
                      description: 'Force SSL'
                      enabled: true
                      action_type: force-ssl
                      action_parameter_1: null
                      action_parameter_2: null
                      trigger_matching_type: match-any
                      triggers:
                        -
                          type: url
                          pattern_matching_type: match-any
                          pattern_matches:
                            - '*'
                          parameter_1: null
                      extra_actions: []
                    message: 'Edge rule retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Not Found'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      message:
                        type: string
                        examples:
                          - 'Edge rule not found'
                      http_status:
                        type: integer
                        examples:
                          - 404
                    examples:
                      -
                        data: {  }
                        message: 'Edge rule not found'
                        http_status: 404
                  -
                    description: 'Site Not Found'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      message:
                        type: string
                        examples:
                          - 'Site not found'
                      http_status:
                        type: integer
                        examples:
                          - 404
                    examples:
                      -
                        data: {  }
                        message: 'Site not found'
                        http_status: 404
      tags:
        - Sites
    put:
      summary: 'Update Edge Rule'
      operationId: 'sitesCDN:EdgeRulesUpdateEdgeRule'
      description: "Updates an existing edge rule. All fields are optional — only include fields you want\nto change. Omitted fields retain their current values."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      guid:
                        type: string
                        examples:
                          - a1b2c3d4-e5f6-7890-abcd-ef1234567890
                      description:
                        type: string
                        examples:
                          - 'Updated description'
                      enabled:
                        type: boolean
                        examples:
                          - false
                      action_type:
                        type: string
                        examples:
                          - redirect
                      action_parameter_1:
                        type: string
                        examples:
                          - 'https://example.com/new-location'
                      action_parameter_2:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      trigger_matching_type:
                        type: string
                        examples:
                          - match-all
                      triggers:
                        type: array
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              examples:
                                - url
                            pattern_matching_type:
                              type: string
                              examples:
                                - match-any
                            pattern_matches:
                              type: array
                              items:
                                type: string
                              examples:
                                -
                                  - /old-page
                            parameter_1:
                              type:
                                - string
                                - 'null'
                              examples:
                                - null
                        examples:
                          -
                            -
                              type: url
                              pattern_matching_type: match-any
                              pattern_matches:
                                - /old-page
                              parameter_1: null
                      extra_actions:
                        type: array
                        examples:
                          - []
                  message:
                    type: string
                    examples:
                      - 'Edge rule updated successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890
                      description: 'Updated description'
                      enabled: false
                      action_type: redirect
                      action_parameter_1: 'https://example.com/new-location'
                      action_parameter_2: null
                      trigger_matching_type: match-all
                      triggers:
                        -
                          type: url
                          pattern_matching_type: match-any
                          pattern_matches:
                            - /old-page
                          parameter_1: null
                      extra_actions: []
                    message: 'Edge rule updated successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      action_type:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The action type must be a valid edge rule action type.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      action_type:
                        - 'The action type must be a valid edge rule action type.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Sites
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                description:
                  type: string
                  description: 'The rule description (max 255 characters).'
                  examples:
                    - 'Updated description'
                enabled:
                  type: boolean
                  description: 'Whether the rule is enabled.'
                  examples:
                    - false
                action_type:
                  type: string
                  description: 'The primary action type.'
                  examples:
                    - redirect
                action_parameter_1:
                  type:
                    - string
                    - 'null'
                  description: 'Action parameter 1.'
                  examples:
                    - 'https://example.com/new-location'
                action_parameter_2:
                  type:
                    - string
                    - 'null'
                  description: 'Action parameter 2.'
                  examples:
                    - architecto
                trigger_matching_type:
                  type: string
                  description: 'How triggers are combined. Must be match-any, match-all, or match-none.'
                  examples:
                    - match-all
                triggers:
                  type: array
                  description: 'Trigger conditions (replaces all existing triggers).'
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        description: 'The trigger type.'
                        examples:
                          - url
                      pattern_matching_type:
                        type: string
                        description: 'How patterns are matched.'
                        examples:
                          - match-any
                      pattern_matches:
                        type: array
                        description: 'Patterns to match against.'
                        items:
                          type: string
                        examples:
                          -
                            - /old-page
                      parameter_1:
                        type:
                          - string
                          - 'null'
                        description: 'Optional trigger parameter.'
                        examples:
                          - architecto
                    required:
                      - type
                      - pattern_matching_type
                      - pattern_matches
                  examples:
                    -
                      - []
                extra_actions:
                  type: array
                  description: 'Extra actions (replaces all existing extra actions).'
                  items:
                    type: object
                    properties:
                      action_type:
                        type: string
                        description: 'The extra action type.'
                        examples:
                          - set-response-header
                      action_parameter_1:
                        type:
                          - string
                          - 'null'
                        description: 'Action parameter 1.'
                        examples:
                          - X-Redirect
                      action_parameter_2:
                        type:
                          - string
                          - 'null'
                        description: 'Action parameter 2.'
                        examples:
                          - 'true'
                    required:
                      - action_type
                  examples:
                    -
                      - []
    delete:
      summary: 'Delete Edge Rule'
      operationId: 'sitesCDN:EdgeRulesDeleteEdgeRule'
      description: 'Permanently deletes an edge rule. This action cannot be undone.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Edge rule deleted successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data: {  }
                    message: 'Edge rule deleted successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
      tags:
        - Sites
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
      -
        in: path
        name: rule
        description: ''
        required: true
        schema:
          type: string
          examples:
            - architecto
      -
        in: path
        name: ruleId
        description: 'The edge rule GUID.'
        required: true
        schema:
          type: string
          examples:
            - a1b2c3d4-e5f6-7890-abcd-ef1234567890
  '/api/v1/vector/sites/{site}/waf/settings':
    get:
      summary: 'Get WAF Settings'
      operationId: 'sitesWAF:SettingsGetWAFSettings'
      description: 'Retrieves the current WAF configuration for a site.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      enabled:
                        type: boolean
                        examples:
                          - true
                      learning_mode:
                        type: boolean
                        examples:
                          - false
                      profile_id:
                        type: integer
                        examples:
                          - 1
                      execution_mode:
                        type: integer
                        examples:
                          - 1
                      disabled_rules:
                        type: array
                        examples:
                          - []
                      log_only_rules:
                        type: array
                        examples:
                          - []
                      request_header_logging:
                        type: boolean
                        examples:
                          - false
                      request_body_limit_action:
                        type: integer
                        examples:
                          - 0
                      response_body_limit_action:
                        type: integer
                        examples:
                          - 0
                      realtime_threat_intelligence:
                        type: boolean
                        examples:
                          - true
                  message:
                    type: string
                    examples:
                      - 'WAF settings retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      enabled: true
                      learning_mode: false
                      profile_id: 1
                      execution_mode: 1
                      disabled_rules: []
                      log_only_rules: []
                      request_header_logging: false
                      request_body_limit_action: 0
                      response_body_limit_action: 0
                      realtime_threat_intelligence: true
                    message: 'WAF settings retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
      tags:
        - Sites
    put:
      summary: 'Update WAF Settings'
      operationId: 'sitesWAF:SettingsUpdateWAFSettings'
      description: "Updates WAF configuration for a site. All fields are optional — only include\nfields you want to change. Omitted fields retain their current values."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      enabled:
                        type: boolean
                        examples:
                          - true
                      learning_mode:
                        type: boolean
                        examples:
                          - false
                      execution_mode:
                        type: integer
                        examples:
                          - 1
                  message:
                    type: string
                    examples:
                      - 'WAF settings updated successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      enabled: true
                      learning_mode: false
                      execution_mode: 1
                    message: 'WAF settings updated successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      execution_mode:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The execution mode must be 0 (Log) or 1 (Block).'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      execution_mode:
                        - 'The execution mode must be 0 (Log) or 1 (Block).'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Sites
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                enabled:
                  type: boolean
                  description: 'Enable or disable WAF.'
                  examples:
                    - true
                learning_mode:
                  type: boolean
                  description: 'Enable learning mode (log without blocking).'
                  examples:
                    - false
                profile_id:
                  type: integer
                  description: 'WAF profile ID.'
                  examples:
                    - 1
                execution_mode:
                  type: integer
                  description: 'WAF execution mode (0=Log, 1=Block).'
                  examples:
                    - 1
                disabled_rules:
                  type: array
                  description: 'Array of individual disabled rule IDs.'
                  items:
                    type: string
                  examples:
                    -
                      - rule-1
                log_only_rules:
                  type: array
                  description: 'Array of rules set to log-only mode.'
                  items:
                    type: string
                  examples:
                    -
                      - rule-2
                request_header_logging:
                  type: boolean
                  description: 'Log request headers.'
                  examples:
                    - false
                request_body_limit_action:
                  type: integer
                  description: 'Request body limit action (0=ProcessPartial, 1=Reject, 2=Ignore).'
                  examples:
                    - 0
                response_body_limit_action:
                  type: integer
                  description: 'Response body limit action (0=ProcessPartial, 1=Reject, 2=Ignore).'
                  examples:
                    - 0
                realtime_threat_intelligence:
                  type: boolean
                  description: 'Enable realtime threat intelligence feeds.'
                  examples:
                    - true
    parameters:
      -
        in: path
        name: site
        description: 'The site.'
        required: true
        schema:
          type: string
          examples:
            - architecto
      -
        in: path
        name: vectorSite
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/waf/profiles':
    get:
      summary: 'List WAF Profiles'
      operationId: 'sitesWAF:ProfilesListWAFProfiles'
      description: 'Retrieves the available WAF profiles that can be assigned to a site.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        Id:
                          type: integer
                          examples:
                            - 1
                        Name:
                          type: string
                          examples:
                            - Default
                    examples:
                      -
                        -
                          Id: 1
                          Name: Default
                        -
                          Id: 2
                          Name: WordPress
                  message:
                    type: string
                    examples:
                      - 'WAF profiles retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      -
                        Id: 1
                        Name: Default
                      -
                        Id: 2
                        Name: WordPress
                    message: 'WAF profiles retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
      tags:
        - Sites
    parameters:
      -
        in: path
        name: site
        description: 'The site.'
        required: true
        schema:
          type: string
          examples:
            - architecto
      -
        in: path
        name: vectorSite
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/waf/ddos':
    get:
      summary: 'Get DDoS Protection Settings'
      operationId: 'sitesWAF:DDoSProtectionGetDDoSProtectionSettings'
      description: 'Retrieves the current DDoS protection configuration for a site.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      enabled:
                        type: boolean
                        examples:
                          - true
                      protection_type:
                        type: integer
                        examples:
                          - 1
                      sensitivity:
                        type: integer
                        examples:
                          - 2
                      execution_mode:
                        type: integer
                        examples:
                          - 1
                      challenge_window:
                        type: integer
                        examples:
                          - 30
                  message:
                    type: string
                    examples:
                      - 'DDoS protection settings retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      enabled: true
                      protection_type: 1
                      sensitivity: 2
                      execution_mode: 1
                      challenge_window: 30
                    message: 'DDoS protection settings retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
      tags:
        - Sites
    put:
      summary: 'Update DDoS Protection Settings'
      operationId: 'sitesWAF:DDoSProtectionUpdateDDoSProtectionSettings'
      description: "Updates DDoS protection configuration for a site. All fields are optional — only include\nfields you want to change. Omitted fields retain their current values."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      enabled:
                        type: boolean
                        examples:
                          - true
                      protection_type:
                        type: integer
                        examples:
                          - 1
                      sensitivity:
                        type: integer
                        examples:
                          - 2
                      execution_mode:
                        type: integer
                        examples:
                          - 1
                      challenge_window:
                        type: integer
                        examples:
                          - 30
                  message:
                    type: string
                    examples:
                      - 'DDoS protection settings updated successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      enabled: true
                      protection_type: 1
                      sensitivity: 2
                      execution_mode: 1
                      challenge_window: 30
                    message: 'DDoS protection settings updated successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      sensitivity:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The sensitivity must be 0 (Off), 1 (Low), 2 (Medium), 3 (High), or 4 (VeryHigh).'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      sensitivity:
                        - 'The sensitivity must be 0 (Off), 1 (Low), 2 (Medium), 3 (High), or 4 (VeryHigh).'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Sites
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                enabled:
                  type: boolean
                  description: 'Enable or disable DDoS protection.'
                  examples:
                    - true
                protection_type:
                  type: integer
                  description: 'Protection type (0=DetectOnly, 1=ActiveStandard, 2=ActiveAggressive).'
                  examples:
                    - 1
                sensitivity:
                  type: integer
                  description: 'Shield sensitivity (0=Off, 1=Low, 2=Medium, 3=High, 4=VeryHigh).'
                  examples:
                    - 2
                execution_mode:
                  type: integer
                  description: 'Execution mode (0=Off, 1=On).'
                  examples:
                    - 1
                challenge_window:
                  type: integer
                  description: 'Challenge window in seconds.'
                  examples:
                    - 30
    parameters:
      -
        in: path
        name: site
        description: 'The site.'
        required: true
        schema:
          type: string
          examples:
            - architecto
      -
        in: path
        name: vectorSite
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/waf/bot-detection':
    get:
      summary: 'Get Bot Detection Settings'
      operationId: 'sitesWAF:BotDetectionGetBotDetectionSettings'
      description: 'Retrieves the current bot detection configuration for a site.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      execution_mode:
                        type: integer
                        examples:
                          - 1
                      request_integrity_sensitivity:
                        type: integer
                        examples:
                          - 2
                      ip_address_sensitivity:
                        type: integer
                        examples:
                          - 1
                      browser_fingerprint_sensitivity:
                        type: integer
                        examples:
                          - 2
                      browser_fingerprint_aggression:
                        type: integer
                        examples:
                          - 1
                      browser_fingerprint_complex_enabled:
                        type: boolean
                        examples:
                          - false
                  message:
                    type: string
                    examples:
                      - 'Bot detection settings retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      execution_mode: 1
                      request_integrity_sensitivity: 2
                      ip_address_sensitivity: 1
                      browser_fingerprint_sensitivity: 2
                      browser_fingerprint_aggression: 1
                      browser_fingerprint_complex_enabled: false
                    message: 'Bot detection settings retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
      tags:
        - Sites
    put:
      summary: 'Update Bot Detection Settings'
      operationId: 'sitesWAF:BotDetectionUpdateBotDetectionSettings'
      description: "Updates bot detection configuration for a site. All fields are optional — only include\nfields you want to change. Omitted fields retain their current values."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      execution_mode:
                        type: integer
                        examples:
                          - 1
                      request_integrity_sensitivity:
                        type: integer
                        examples:
                          - 2
                      ip_address_sensitivity:
                        type: integer
                        examples:
                          - 1
                      browser_fingerprint_sensitivity:
                        type: integer
                        examples:
                          - 2
                      browser_fingerprint_aggression:
                        type: integer
                        examples:
                          - 1
                      browser_fingerprint_complex_enabled:
                        type: boolean
                        examples:
                          - false
                  message:
                    type: string
                    examples:
                      - 'Bot detection settings updated successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      execution_mode: 1
                      request_integrity_sensitivity: 2
                      ip_address_sensitivity: 1
                      browser_fingerprint_sensitivity: 2
                      browser_fingerprint_aggression: 1
                      browser_fingerprint_complex_enabled: false
                    message: 'Bot detection settings updated successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      execution_mode:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The execution mode must be 0 (Off) or 1 (On).'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      execution_mode:
                        - 'The execution mode must be 0 (Off) or 1 (On).'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Sites
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                execution_mode:
                  type: integer
                  description: 'Execution mode (0=Off, 1=On).'
                  examples:
                    - 1
                request_integrity_sensitivity:
                  type: integer
                  description: 'Request integrity sensitivity (0=Off, 1=Low, 2=Medium, 3=High).'
                  examples:
                    - 2
                ip_address_sensitivity:
                  type: integer
                  description: 'IP address sensitivity (0=Off, 1=Low, 2=Medium, 3=High).'
                  examples:
                    - 1
                browser_fingerprint_sensitivity:
                  type: integer
                  description: 'Browser fingerprint sensitivity (0=Off, 1=Low, 2=Medium, 3=High).'
                  examples:
                    - 2
                browser_fingerprint_aggression:
                  type: integer
                  description: 'Browser fingerprint aggression (0=Off, 1=Low, 2=Medium, 3=High, 4=VeryHigh).'
                  examples:
                    - 1
                browser_fingerprint_complex_enabled:
                  type: boolean
                  description: 'Enable complex browser fingerprinting.'
                  examples:
                    - false
    parameters:
      -
        in: path
        name: site
        description: 'The site.'
        required: true
        schema:
          type: string
          examples:
            - architecto
      -
        in: path
        name: vectorSite
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/waf/access-lists':
    get:
      summary: 'List Access Lists'
      operationId: 'sitesWAF:AccessListsListAccessLists'
      description: 'Retrieves all access lists (managed and custom) for a site, including usage limits.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      managed_lists:
                        type: array
                        items:
                          type: object
                          properties:
                            list_id:
                              type: integer
                              examples:
                                - 1
                            configuration_id:
                              type: integer
                              examples:
                                - 42
                            name:
                              type: string
                              examples:
                                - 'TOR Exit Nodes'
                            description:
                              type: string
                              examples:
                                - 'Known TOR exit node IP addresses'
                            is_enabled:
                              type: boolean
                              examples:
                                - true
                            type:
                              type: integer
                              examples:
                                - 0
                            category:
                              type: integer
                              examples:
                                - 32
                            action:
                              type: integer
                              examples:
                                - 0
                            required_plan:
                              type: integer
                              examples:
                                - 0
                            entry_count:
                              type: integer
                              examples:
                                - 12345
                            update_frequency:
                              type: string
                              examples:
                                - '1.00:00:00'
                            last_updated:
                              type: string
                              examples:
                                - '2026-04-01T00:00:00Z'
                        examples:
                          -
                            -
                              list_id: 1
                              configuration_id: 42
                              name: 'TOR Exit Nodes'
                              description: 'Known TOR exit node IP addresses'
                              is_enabled: true
                              type: 0
                              category: 32
                              action: 0
                              required_plan: 0
                              entry_count: 12345
                              update_frequency: '1.00:00:00'
                              last_updated: '2026-04-01T00:00:00Z'
                      custom_lists:
                        type: array
                        examples:
                          - []
                      custom_entry_count:
                        type: integer
                        examples:
                          - 0
                      custom_entry_limit:
                        type: integer
                        examples:
                          - 10000
                      custom_list_count:
                        type: integer
                        examples:
                          - 0
                      custom_list_limit:
                        type: integer
                        examples:
                          - 25
                  message:
                    type: string
                    examples:
                      - 'Access lists retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      managed_lists:
                        -
                          list_id: 1
                          configuration_id: 42
                          name: 'TOR Exit Nodes'
                          description: 'Known TOR exit node IP addresses'
                          is_enabled: true
                          type: 0
                          category: 32
                          action: 0
                          required_plan: 0
                          entry_count: 12345
                          update_frequency: '1.00:00:00'
                          last_updated: '2026-04-01T00:00:00Z'
                      custom_lists: []
                      custom_entry_count: 0
                      custom_entry_limit: 10000
                      custom_list_count: 0
                      custom_list_limit: 25
                    message: 'Access lists retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
      tags:
        - Sites
    post:
      summary: 'Create Custom Access List'
      operationId: 'sitesWAF:AccessListsCreateCustomAccessList'
      description: 'Creates a new custom access list with the provided entries.'
      parameters: []
      responses:
        201:
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        examples:
                          - 1
                      name:
                        type: string
                        examples:
                          - 'Office IPs'
                      description:
                        type: string
                        examples:
                          - 'Trusted office IP ranges'
                      type:
                        type: integer
                        examples:
                          - 0
                      content:
                        type: string
                        examples:
                          - "203.0.113.0/24\n198.51.100.1"
                      checksum:
                        type: string
                        examples:
                          - abc123
                      entry_count:
                        type: integer
                        examples:
                          - 2
                      last_modified:
                        type: string
                        examples:
                          - '2026-04-01T00:00:00Z'
                  message:
                    type: string
                    examples:
                      - 'Custom access list created successfully'
                  http_status:
                    type: integer
                    examples:
                      - 201
                examples:
                  -
                    data:
                      id: 1
                      name: 'Office IPs'
                      description: 'Trusted office IP ranges'
                      type: 0
                      content: "203.0.113.0/24\n198.51.100.1"
                      checksum: abc123
                      entry_count: 2
                      last_modified: '2026-04-01T00:00:00Z'
                    message: 'Custom access list created successfully'
                    http_status: 201
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      name:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The name field is required.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      name:
                        - 'The name field is required.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Sites
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'The list name (max 255 characters).'
                  examples:
                    - 'Office IPs'
                description:
                  type:
                    - string
                    - 'null'
                  description: 'A description of the list (max 1000 characters).'
                  examples:
                    - 'Trusted office IP ranges'
                type:
                  type: integer
                  description: 'The list type (0=IP, 1=CIDR, 2=ASN, 3=Country, 4=Domain, 5=Header).'
                  examples:
                    - 0
                content:
                  type: string
                  description: 'Newline-separated list entries.'
                  examples:
                    - 203.0.113.0/24\n198.51.100.1
              required:
                - name
                - type
                - content
    parameters:
      -
        in: path
        name: site
        description: 'The site.'
        required: true
        schema:
          type: string
          examples:
            - architecto
      -
        in: path
        name: vectorSite
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/waf/access-lists/enums':
    get:
      summary: 'Get Access List Enums'
      operationId: 'sitesWAF:AccessListsGetAccessListEnums'
      description: 'Retrieves available enum values for access list types, actions, and categories.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Access list enums retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data: {  }
                    message: 'Access list enums retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
      tags:
        - Sites
    parameters:
      -
        in: path
        name: site
        description: 'The site.'
        required: true
        schema:
          type: string
          examples:
            - architecto
      -
        in: path
        name: vectorSite
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/waf/access-lists/{listId}':
    get:
      summary: 'Get Custom Access List'
      operationId: 'sitesWAF:AccessListsGetCustomAccessList'
      description: 'Retrieves a single custom access list with its content.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        examples:
                          - 1
                      name:
                        type: string
                        examples:
                          - 'Office IPs'
                      description:
                        type: string
                        examples:
                          - 'Trusted office IP ranges'
                      type:
                        type: integer
                        examples:
                          - 0
                      content:
                        type: string
                        examples:
                          - "203.0.113.0/24\n198.51.100.1"
                      checksum:
                        type: string
                        examples:
                          - abc123
                      entry_count:
                        type: integer
                        examples:
                          - 2
                      last_modified:
                        type: string
                        examples:
                          - '2026-04-01T00:00:00Z'
                  message:
                    type: string
                    examples:
                      - 'Custom access list retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 1
                      name: 'Office IPs'
                      description: 'Trusted office IP ranges'
                      type: 0
                      content: "203.0.113.0/24\n198.51.100.1"
                      checksum: abc123
                      entry_count: 2
                      last_modified: '2026-04-01T00:00:00Z'
                    message: 'Custom access list retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
      tags:
        - Sites
    patch:
      summary: 'Update Custom Access List'
      operationId: 'sitesWAF:AccessListsUpdateCustomAccessList'
      description: "Updates a custom access list's name and/or content. Only include fields you want to change."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        examples:
                          - 1
                      name:
                        type: string
                        examples:
                          - 'Updated Office IPs'
                      description:
                        type: string
                        examples:
                          - 'Trusted office IP ranges'
                      type:
                        type: integer
                        examples:
                          - 0
                      content:
                        type: string
                        examples:
                          - "203.0.113.0/24\n198.51.100.1\n10.0.0.0/8"
                      checksum:
                        type: string
                        examples:
                          - def456
                      entry_count:
                        type: integer
                        examples:
                          - 3
                      last_modified:
                        type: string
                        examples:
                          - '2026-04-07T00:00:00Z'
                  message:
                    type: string
                    examples:
                      - 'Custom access list updated successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 1
                      name: 'Updated Office IPs'
                      description: 'Trusted office IP ranges'
                      type: 0
                      content: "203.0.113.0/24\n198.51.100.1\n10.0.0.0/8"
                      checksum: def456
                      entry_count: 3
                      last_modified: '2026-04-07T00:00:00Z'
                    message: 'Custom access list updated successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      name:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The name must be a string.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      name:
                        - 'The name must be a string.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Sites
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'The list name (max 255 characters).'
                  examples:
                    - 'Updated Office IPs'
                content:
                  type: string
                  description: 'Newline-separated list entries.'
                  examples:
                    - 203.0.113.0/24\n198.51.100.1\n10.0.0.0/8
    delete:
      summary: 'Delete Custom Access List'
      operationId: 'sitesWAF:AccessListsDeleteCustomAccessList'
      description: 'Permanently deletes a custom access list. This action cannot be undone.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Custom access list deleted successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data: {  }
                    message: 'Custom access list deleted successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
      tags:
        - Sites
    parameters:
      -
        in: path
        name: site
        description: 'The site.'
        required: true
        schema:
          type: string
          examples:
            - architecto
      -
        in: path
        name: listId
        description: 'The access list ID.'
        required: true
        schema:
          type: integer
          examples:
            - 1
      -
        in: path
        name: vectorSite
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/waf/allowed-referrers/{hostname}':
    delete:
      summary: 'Remove Allowed Referrer'
      operationId: 'sitesWAF:ReferrersRemoveAllowedReferrer'
      description: 'Removes a hostname from the allowed referrers list.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      hostname:
                        type: string
                        examples:
                          - example.com
                  message:
                    type: string
                    examples:
                      - 'Allowed referrer removed successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      hostname: example.com
                    message: 'Allowed referrer removed successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Not Found'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      message:
                        type: string
                        examples:
                          - 'Allowed referrer not found'
                      http_status:
                        type: integer
                        examples:
                          - 404
                    examples:
                      -
                        data: {  }
                        message: 'Allowed referrer not found'
                        http_status: 404
                  -
                    description: 'Site Not Found'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      message:
                        type: string
                        examples:
                          - 'Site not found'
                      http_status:
                        type: integer
                        examples:
                          - 404
                    examples:
                      -
                        data: {  }
                        message: 'Site not found'
                        http_status: 404
      tags:
        - Sites
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
      -
        in: path
        name: hostname
        description: 'The hostname to remove.'
        required: true
        schema:
          type: string
          examples:
            - example.com
  '/api/v1/vector/sites/{site}/waf/blocked-referrers/{hostname}':
    delete:
      summary: 'Remove Blocked Referrer'
      operationId: 'sitesWAF:ReferrersRemoveBlockedReferrer'
      description: 'Removes a hostname from the blocked referrers list.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      hostname:
                        type: string
                        examples:
                          - spam.example.com
                  message:
                    type: string
                    examples:
                      - 'Blocked referrer removed successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      hostname: spam.example.com
                    message: 'Blocked referrer removed successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Not Found'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      message:
                        type: string
                        examples:
                          - 'Blocked referrer not found'
                      http_status:
                        type: integer
                        examples:
                          - 404
                    examples:
                      -
                        data: {  }
                        message: 'Blocked referrer not found'
                        http_status: 404
                  -
                    description: 'Site Not Found'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      message:
                        type: string
                        examples:
                          - 'Site not found'
                      http_status:
                        type: integer
                        examples:
                          - 404
                    examples:
                      -
                        data: {  }
                        message: 'Site not found'
                        http_status: 404
      tags:
        - Sites
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
      -
        in: path
        name: hostname
        description: 'The hostname to remove.'
        required: true
        schema:
          type: string
          examples:
            - spam.example.com
  '/api/v1/vector/sites/{site}/waf/blocked-ips/{ip}':
    delete:
      summary: 'Remove Blocked IP'
      operationId: 'sitesWAF:BlockedIPsRemoveBlockedIP'
      description: 'Removes an IP address from the blocked list.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      ip:
                        type: string
                        examples:
                          - 192.0.2.1
                  message:
                    type: string
                    examples:
                      - 'Blocked IP removed successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      ip: 192.0.2.1
                    message: 'Blocked IP removed successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Not Found'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      message:
                        type: string
                        examples:
                          - 'Blocked IP not found'
                      http_status:
                        type: integer
                        examples:
                          - 404
                    examples:
                      -
                        data: {  }
                        message: 'Blocked IP not found'
                        http_status: 404
                  -
                    description: 'Site Not Found'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      message:
                        type: string
                        examples:
                          - 'Site not found'
                      http_status:
                        type: integer
                        examples:
                          - 404
                    examples:
                      -
                        data: {  }
                        message: 'Site not found'
                        http_status: 404
      tags:
        - Sites
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
      -
        in: path
        name: ip
        description: 'The IP address to remove.'
        required: true
        schema:
          type: string
          examples:
            - 192.0.2.1
  '/api/v1/vector/sites/{site}/waf/access-lists/configurations/{configId}':
    patch:
      summary: 'Update Access List Configuration'
      operationId: 'sitesWAF:AccessListsUpdateAccessListConfiguration'
      description: "Updates the configuration (enable/disable and action) for any access list (managed or custom).\nUse the `configuration_id` from the index response, not the `list_id`."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Access list configuration updated successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data: {  }
                    message: 'Access list configuration updated successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      action:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The action must be 0 (Block), 1 (Log), 2 (Allow), 3 (Challenge), 4 (Captcha), or 5 (Bypass).'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      action:
                        - 'The action must be 0 (Block), 1 (Log), 2 (Allow), 3 (Challenge), 4 (Captcha), or 5 (Bypass).'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Sites
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                is_enabled:
                  type: boolean
                  description: 'Whether the list is enabled.'
                  examples:
                    - true
                action:
                  type: integer
                  description: 'The action to take (0=Block, 1=Log, 2=Allow, 3=Challenge, 4=Captcha, 5=Bypass).'
                  examples:
                    - 0
    parameters:
      -
        in: path
        name: site
        description: 'The site.'
        required: true
        schema:
          type: string
          examples:
            - architecto
      -
        in: path
        name: configId
        description: 'The access list configuration ID.'
        required: true
        schema:
          type: integer
          examples:
            - 42
      -
        in: path
        name: vectorSite
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/purge-cache':
    post:
      summary: 'Purge Cache'
      operationId: sitesCDNPurgeCache
      description: "Purges the CDN cache for a site.\nCan purge the entire cache, by cache tag, or a specific URL."
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Full Purge'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      message:
                        type: string
                        examples:
                          - 'Cache purged successfully'
                      http_status:
                        type: integer
                        examples:
                          - 200
                    examples:
                      -
                        data: {  }
                        message: 'Cache purged successfully'
                        http_status: 200
                  -
                    description: 'Tag Purge'
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          cache_tag:
                            type: string
                            examples:
                              - images
                      message:
                        type: string
                        examples:
                          - 'Cache purged successfully for tag: images'
                      http_status:
                        type: integer
                        examples:
                          - 200
                    examples:
                      -
                        data:
                          cache_tag: images
                        message: 'Cache purged successfully for tag: images'
                        http_status: 200
                  -
                    description: 'URL Purge'
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          url:
                            type: string
                            examples:
                              - 'https://example.com/style.css'
                      message:
                        type: string
                        examples:
                          - 'URL purged successfully'
                      http_status:
                        type: integer
                        examples:
                          - 200
                    examples:
                      -
                        data:
                          url: 'https://example.com/style.css'
                        message: 'URL purged successfully'
                        http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      url:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The url field must be a valid URL.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      url:
                        - 'The url field must be a valid URL.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Sites
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                cache_tag:
                  type:
                    - string
                    - 'null'
                  description: 'Purge only content with this cache tag.'
                  examples:
                    - images
                url:
                  type:
                    - string
                    - 'null'
                  description: 'Purge a specific URL.'
                  examples:
                    - 'https://example.com/style.css'
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/sites/{site}/ssh-keys':
    get:
      summary: 'List SSH Keys'
      operationId: sitesSSHKeysListSSHKeys
      description: "Retrieves all SSH keys installed on a specific dev site. The response\nincludes site-specific keys plus any account-level default keys\n(flagged with `is_account_default: true`), which are automatically\ninstalled on every site in the account. Account-level defaults are\nread-only from this endpoint — use the account SSH key endpoints to\nmanage them.\n\nResults are ordered with site-specific keys first, then account-level\ndefaults, each group sorted alphabetically by name."
      parameters:
        -
          in: query
          name: per_page
          description: 'Number of items per page (max 100). Default: 15.'
          required: false
          schema:
            type: integer
            description: 'Number of items per page (max 100). Default: 15.'
            examples:
              - 25
        -
          in: query
          name: page
          description: 'Page number for pagination. Default: 1.'
          required: false
          schema:
            type: integer
            description: 'Page number for pagination. Default: 1.'
            examples:
              - 1
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          examples:
                            - 01jfgxk4nqrst5vwx9yz0abcdi
                        account_id:
                          type: integer
                          examples:
                            - 1
                        vector_site_id:
                          type: string
                          examples:
                            - 01jfgxk4nqrst5vwx9yz0abcdj
                        name:
                          type: string
                          examples:
                            - 'developer key'
                        fingerprint:
                          type: string
                          examples:
                            - 'SHA256:abc123def456...'
                        public_key_preview:
                          type: string
                          examples:
                            - 'ssh-rsa AAAAB3NzaC1yc2EA...user@host'
                        is_account_default:
                          type: boolean
                          examples:
                            - false
                        created_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                        updated_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                    examples:
                      -
                        -
                          id: 01jfgxk4nqrst5vwx9yz0abcdi
                          account_id: 1
                          vector_site_id: 01jfgxk4nqrst5vwx9yz0abcdj
                          name: 'developer key'
                          fingerprint: 'SHA256:abc123def456...'
                          public_key_preview: 'ssh-rsa AAAAB3NzaC1yc2EA...user@host'
                          is_account_default: false
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                        -
                          id: 01jfgxk4nqrst5vwx9yz0abcdl
                          account_id: 1
                          vector_site_id: null
                          name: 'account default key'
                          fingerprint: 'SHA256:def789abc012...'
                          public_key_preview: 'ssh-ed25519 AAAAC3NzaC1l...team@account'
                          is_account_default: true
                          created_at: '2025-01-10T09:00:00+00:00'
                          updated_at: '2025-01-10T09:00:00+00:00'
                  links:
                    type: object
                    properties: {  }
                  meta:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'SSH keys retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      -
                        id: 01jfgxk4nqrst5vwx9yz0abcdi
                        account_id: 1
                        vector_site_id: 01jfgxk4nqrst5vwx9yz0abcdj
                        name: 'developer key'
                        fingerprint: 'SHA256:abc123def456...'
                        public_key_preview: 'ssh-rsa AAAAB3NzaC1yc2EA...user@host'
                        is_account_default: false
                        created_at: '2025-01-15T12:00:00+00:00'
                        updated_at: '2025-01-15T12:00:00+00:00'
                      -
                        id: 01jfgxk4nqrst5vwx9yz0abcdl
                        account_id: 1
                        vector_site_id: null
                        name: 'account default key'
                        fingerprint: 'SHA256:def789abc012...'
                        public_key_preview: 'ssh-ed25519 AAAAC3NzaC1l...team@account'
                        is_account_default: true
                        created_at: '2025-01-10T09:00:00+00:00'
                        updated_at: '2025-01-10T09:00:00+00:00'
                    links: {  }
                    meta: {  }
                    message: 'SSH keys retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
      tags:
        - Sites
    post:
      summary: 'Add SSH Key'
      operationId: sitesSSHKeysAddSSHKey
      description: "Adds a new SSH key to a specific dev site. The key will be deployed to the\nsite's container and grant SSH access."
      parameters: []
      responses:
        201:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdi
                      account_id:
                        type: integer
                        examples:
                          - 1
                      vector_site_id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdj
                      name:
                        type: string
                        examples:
                          - 'developer key'
                      fingerprint:
                        type: string
                        examples:
                          - 'SHA256:abc123def456...'
                      public_key_preview:
                        type: string
                        examples:
                          - 'ssh-rsa AAAAB3NzaC1yc2EA...user@host'
                      is_account_default:
                        type: boolean
                        examples:
                          - false
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'SSH key added to site successfully'
                  http_status:
                    type: integer
                    examples:
                      - 201
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdi
                      account_id: 1
                      vector_site_id: 01jfgxk4nqrst5vwx9yz0abcdj
                      name: 'developer key'
                      fingerprint: 'SHA256:abc123def456...'
                      public_key_preview: 'ssh-rsa AAAAB3NzaC1yc2EA...user@host'
                      is_account_default: false
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'SSH key added to site successfully'
                    http_status: 201
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Invalid Key'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      errors:
                        type: object
                        properties:
                          public_key:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - 'Unable to parse SSH public key. Ensure it is in valid OpenSSH format.'
                      message:
                        type: string
                        examples:
                          - 'Validation failed'
                      http_status:
                        type: integer
                        examples:
                          - 422
                    examples:
                      -
                        data: {  }
                        errors:
                          public_key:
                            - 'Unable to parse SSH public key. Ensure it is in valid OpenSSH format.'
                        message: 'Validation failed'
                        http_status: 422
                  -
                    description: 'Duplicate Key'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      errors:
                        type: object
                        properties:
                          public_key:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - 'This SSH key is already installed on this site.'
                      message:
                        type: string
                        examples:
                          - 'Validation failed'
                      http_status:
                        type: integer
                        examples:
                          - 422
                    examples:
                      -
                        data: {  }
                        errors:
                          public_key:
                            - 'This SSH key is already installed on this site.'
                        message: 'Validation failed'
                        http_status: 422
      tags:
        - Sites
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'A friendly name for the SSH key.'
                  examples:
                    - 'developer key'
                public_key:
                  type: string
                  description: 'The SSH public key in OpenSSH format.'
                  examples:
                    - 'ssh-rsa AAAAB3NzaC1yc2EA... user@host'
              required:
                - name
                - public_key
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdi
  '/api/v1/vector/sites/{site}/ssh-keys/{key}':
    delete:
      summary: 'Remove SSH Key'
      operationId: sitesSSHKeysRemoveSSHKey
      description: "Removes a site-specific SSH key from a dev site. The key will be\nremoved from the site's container and SSH access will be revoked.\n\nOnly keys that belong to this specific site may be removed here —\naccount-level default keys (`is_account_default: true`) are scoped\nout and will return 404 via this endpoint. Manage those via the\naccount SSH key endpoints; removing an account-level key propagates\nto every site in the account."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdk
                      account_id:
                        type: integer
                        examples:
                          - 1
                      vector_site_id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdj
                      name:
                        type: string
                        examples:
                          - 'developer key'
                      fingerprint:
                        type: string
                        examples:
                          - 'SHA256:abc123def456...'
                      public_key_preview:
                        type: string
                        examples:
                          - 'ssh-rsa AAAAB3NzaC1yc2EA...user@host'
                      is_account_default:
                        type: boolean
                        examples:
                          - false
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'SSH key removed from site successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdk
                      account_id: 1
                      vector_site_id: 01jfgxk4nqrst5vwx9yz0abcdj
                      name: 'developer key'
                      fingerprint: 'SHA256:abc123def456...'
                      public_key_preview: 'ssh-rsa AAAAB3NzaC1yc2EA...user@host'
                      is_account_default: false
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'SSH key removed from site successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Key Not Found'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      message:
                        type: string
                        examples:
                          - 'SSH key not found on this site'
                      http_status:
                        type: integer
                        examples:
                          - 404
                    examples:
                      -
                        data: {  }
                        message: 'SSH key not found on this site'
                        http_status: 404
                  -
                    description: 'Site Not Found'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      message:
                        type: string
                        examples:
                          - 'Site not found'
                      http_status:
                        type: integer
                        examples:
                          - 404
                    examples:
                      -
                        data: {  }
                        message: 'Site not found'
                        http_status: 404
      tags:
        - Sites
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdi
      -
        in: path
        name: key
        description: 'The SSH key ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdk
  /api/v1/vector/environments:
    get:
      summary: 'List Environments'
      operationId: listEnvironments
      description: "Retrieves a paginated list of environments. Filter by site using the optional\n`site` parameter, or list all environments for the authenticated account."
      parameters:
        -
          in: query
          name: site
          description: 'Filter by site ID or subdomain.'
          required: false
          schema:
            type: string
            description: 'Filter by site ID or subdomain.'
            examples:
              - 01jfgxk4nqrst5vwx9yz0abcde
        -
          in: query
          name: per_page
          description: 'Number of items per page (max 100). Default: 15.'
          required: false
          schema:
            type: integer
            description: 'Number of items per page (max 100). Default: 15.'
            examples:
              - 25
        -
          in: query
          name: page
          description: 'Page number for pagination. Default: 1.'
          required: false
          schema:
            type: integer
            description: 'Page number for pagination. Default: 1.'
            examples:
              - 1
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          examples:
                            - 01jfgxk4nqrst5vwx9yz0abcdg
                        vector_site_id:
                          type: string
                          examples:
                            - 01jfgxk4nqrst5vwx9yz0abcde
                        your_customer_id:
                          type: string
                          examples:
                            - cust_12345
                        name:
                          type: string
                          examples:
                            - production
                        is_production:
                          type: boolean
                          examples:
                            - true
                        status:
                          type: string
                          examples:
                            - active
                        status_label:
                          type: string
                          examples:
                            - Active
                        provisioning_step:
                          type: string
                          examples:
                            - complete
                        provisioning_step_label:
                          type: string
                          examples:
                            - Complete
                        failure_reason:
                          type:
                            - string
                            - 'null'
                          examples:
                            - null
                        php_version:
                          type: string
                          examples:
                            - '8.3'
                        tags:
                          type: array
                          items:
                            type: string
                          examples:
                            -
                              - live
                              - primary
                        platform_domain:
                          type: string
                          examples:
                            - wispy-dust--prod.vectorpages.com
                        custom_domain:
                          type: string
                          examples:
                            - example.com
                        dns_target:
                          type: string
                          examples:
                            - site-abc123.b-cdn.net
                        dns_status:
                          type: object
                          properties:
                            state:
                              type: string
                              examples:
                                - verified
                            records:
                              type: array
                              examples:
                                - []
                            last_checked_at:
                              type: string
                              examples:
                                - '2025-01-15T12:05:00+00:00'
                        custom_domain_certificate:
                          type: object
                          properties:
                            status:
                              type: string
                              examples:
                                - issued
                            dns_validation_records:
                              type:
                                - string
                                - 'null'
                              examples:
                                - null
                        subdomain:
                          type: string
                          examples:
                            - wispy-dust
                        database_host:
                          type: string
                          examples:
                            - cluster.abc123.us-east-1.rds.amazonaws.com
                        database_name:
                          type: string
                          examples:
                            - db_01jfgxk4nqrst5vwx9yz0abcde
                        created_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                        updated_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                    examples:
                      -
                        -
                          id: 01jfgxk4nqrst5vwx9yz0abcdg
                          vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                          your_customer_id: cust_12345
                          name: production
                          is_production: true
                          status: active
                          status_label: Active
                          provisioning_step: complete
                          provisioning_step_label: Complete
                          failure_reason: null
                          php_version: '8.3'
                          tags:
                            - live
                            - primary
                          platform_domain: wispy-dust--prod.vectorpages.com
                          custom_domain: example.com
                          dns_target: site-abc123.b-cdn.net
                          dns_status:
                            state: verified
                            records: []
                            last_checked_at: '2025-01-15T12:05:00+00:00'
                          custom_domain_certificate:
                            status: issued
                            dns_validation_records: null
                          subdomain: wispy-dust
                          database_host: cluster.abc123.us-east-1.rds.amazonaws.com
                          database_name: db_01jfgxk4nqrst5vwx9yz0abcde
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                  links:
                    type: object
                    properties: {  }
                  meta:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Environments retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      -
                        id: 01jfgxk4nqrst5vwx9yz0abcdg
                        vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                        your_customer_id: cust_12345
                        name: production
                        is_production: true
                        status: active
                        status_label: Active
                        provisioning_step: complete
                        provisioning_step_label: Complete
                        failure_reason: null
                        php_version: '8.3'
                        tags:
                          - live
                          - primary
                        platform_domain: wispy-dust--prod.vectorpages.com
                        custom_domain: example.com
                        dns_target: site-abc123.b-cdn.net
                        dns_status:
                          state: verified
                          records: []
                          last_checked_at: '2025-01-15T12:05:00+00:00'
                        custom_domain_certificate:
                          status: issued
                          dns_validation_records: null
                        subdomain: wispy-dust
                        database_host: cluster.abc123.us-east-1.rds.amazonaws.com
                        database_name: db_01jfgxk4nqrst5vwx9yz0abcde
                        created_at: '2025-01-15T12:00:00+00:00'
                        updated_at: '2025-01-15T12:00:00+00:00'
                    links: {  }
                    meta: {  }
                    message: 'Environments retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
      tags:
        - Environments
  '/api/v1/vector/environments/{env}':
    get:
      summary: 'Get Environment'
      operationId: getEnvironment
      description: 'Retrieves details of a specific environment.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdg
                      vector_site_id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id:
                        type: string
                        examples:
                          - cust_12345
                      name:
                        type: string
                        examples:
                          - production
                      is_production:
                        type: boolean
                        examples:
                          - true
                      status:
                        type: string
                        examples:
                          - active
                      status_label:
                        type: string
                        examples:
                          - Active
                      provisioning_step:
                        type: string
                        examples:
                          - complete
                      provisioning_step_label:
                        type: string
                        examples:
                          - Complete
                      failure_reason:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      php_version:
                        type: string
                        examples:
                          - '8.3'
                      tags:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - live
                            - primary
                      platform_domain:
                        type: string
                        examples:
                          - wispy-dust--prod.vectorpages.com
                      custom_domain:
                        type: string
                        examples:
                          - example.com
                      dns_target:
                        type: string
                        examples:
                          - site-abc123.b-cdn.net
                      dns_status:
                        type: object
                        properties:
                          state:
                            type: string
                            examples:
                              - verified
                          records:
                            type: array
                            examples:
                              - []
                          last_checked_at:
                            type: string
                            examples:
                              - '2025-01-15T12:05:00+00:00'
                      custom_domain_certificate:
                        type: object
                        properties:
                          status:
                            type: string
                            examples:
                              - issued
                          dns_validation_records:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                      subdomain:
                        type: string
                        examples:
                          - wispy-dust
                      database_host:
                        type: string
                        examples:
                          - cluster.abc123.us-east-1.rds.amazonaws.com
                      database_name:
                        type: string
                        examples:
                          - db_01jfgxk4nqrst5vwx9yz0abcde
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Environment retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdg
                      vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id: cust_12345
                      name: production
                      is_production: true
                      status: active
                      status_label: Active
                      provisioning_step: complete
                      provisioning_step_label: Complete
                      failure_reason: null
                      php_version: '8.3'
                      tags:
                        - live
                        - primary
                      platform_domain: wispy-dust--prod.vectorpages.com
                      custom_domain: example.com
                      dns_target: site-abc123.b-cdn.net
                      dns_status:
                        state: verified
                        records: []
                        last_checked_at: '2025-01-15T12:05:00+00:00'
                      custom_domain_certificate:
                        status: issued
                        dns_validation_records: null
                      subdomain: wispy-dust
                      database_host: cluster.abc123.us-east-1.rds.amazonaws.com
                      database_name: db_01jfgxk4nqrst5vwx9yz0abcde
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Environment retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Environment not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Environment not found'
                    http_status: 404
      tags:
        - Environments
    put:
      summary: 'Update Environment'
      operationId: updateEnvironment
      description: "Updates an existing environment. Only the fields provided will be updated.\n\nWhen `custom_domain` changes, a domain change operation is initiated asynchronously\n(SSL certificate provisioning, search-replace, env sync, redeployment). The response\nincludes a `pending_domain_change` object for polling status. Returns 202 for domain\nchanges and 200 for metadata-only updates.\n\n#### DNS Requirements\n\nAfter setting a custom domain, the domain owner must create two types of DNS records:\n\n1. **CNAME for traffic routing** — Point the custom domain to the `dns_target` value\n   (e.g., `example.com CNAME cdn-hostname.b-cdn.net`).\n2. **CNAME(s) for SSL certificate validation** — Create the DNS records listed in\n   `custom_domain_certificate.dns_validation_records`. These are required by AWS ACM\n   to issue the SSL certificate. Until these records are created, the certificate\n   status will remain `waiting_validation`.\n\nPoll the environment (GET) to check `custom_domain_certificate.status` for progress.\nPossible values: `pending`, `requesting`, `waiting_validation`, `issued`, `failed`, `timed_out`."
      parameters: []
      responses:
        200:
          description: 'Metadata Update'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdg
                      vector_site_id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id:
                        type: string
                        examples:
                          - cust_12345
                      name:
                        type: string
                        examples:
                          - production
                      is_production:
                        type: boolean
                        examples:
                          - true
                      status:
                        type: string
                        examples:
                          - active
                      status_label:
                        type: string
                        examples:
                          - Active
                      provisioning_step:
                        type: string
                        examples:
                          - complete
                      provisioning_step_label:
                        type: string
                        examples:
                          - Complete
                      failure_reason:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      php_version:
                        type: string
                        examples:
                          - '8.4'
                      tags:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - live
                            - updated
                      platform_domain:
                        type: string
                        examples:
                          - wispy-dust--prod.vectorpages.com
                      custom_domain:
                        type: string
                        examples:
                          - example.com
                      dns_target:
                        type: string
                        examples:
                          - site-abc123.b-cdn.net
                      dns_status:
                        type: object
                        properties:
                          state:
                            type: string
                            examples:
                              - verified
                          records:
                            type: array
                            examples:
                              - []
                          last_checked_at:
                            type: string
                            examples:
                              - '2025-01-15T12:05:00+00:00'
                      custom_domain_certificate:
                        type: object
                        properties:
                          status:
                            type: string
                            examples:
                              - issued
                          dns_validation_records:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                      subdomain:
                        type: string
                        examples:
                          - wispy-dust
                      database_host:
                        type: string
                        examples:
                          - cluster.abc123.us-east-1.rds.amazonaws.com
                      database_name:
                        type: string
                        examples:
                          - db_01jfgxk4nqrst5vwx9yz0abcde
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Environment updated successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdg
                      vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id: cust_12345
                      name: production
                      is_production: true
                      status: active
                      status_label: Active
                      provisioning_step: complete
                      provisioning_step_label: Complete
                      failure_reason: null
                      php_version: '8.4'
                      tags:
                        - live
                        - updated
                      platform_domain: wispy-dust--prod.vectorpages.com
                      custom_domain: example.com
                      dns_target: site-abc123.b-cdn.net
                      dns_status:
                        state: verified
                        records: []
                        last_checked_at: '2025-01-15T12:05:00+00:00'
                      custom_domain_certificate:
                        status: issued
                        dns_validation_records: null
                      subdomain: wispy-dust
                      database_host: cluster.abc123.us-east-1.rds.amazonaws.com
                      database_name: db_01jfgxk4nqrst5vwx9yz0abcde
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Environment updated successfully'
                    http_status: 200
        202:
          description: 'Domain Change Initiated'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdg
                      vector_site_id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id:
                        type: string
                        examples:
                          - cust_12345
                      name:
                        type: string
                        examples:
                          - production
                      is_production:
                        type: boolean
                        examples:
                          - true
                      status:
                        type: string
                        examples:
                          - active
                      status_label:
                        type: string
                        examples:
                          - Active
                      provisioning_step:
                        type: string
                        examples:
                          - complete
                      provisioning_step_label:
                        type: string
                        examples:
                          - Complete
                      failure_reason:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      php_version:
                        type: string
                        examples:
                          - '8.3'
                      tags:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - live
                            - primary
                      platform_domain:
                        type: string
                        examples:
                          - wispy-dust--prod.vectorpages.com
                      custom_domain:
                        type: string
                        examples:
                          - example.com
                      dns_target:
                        type: string
                        examples:
                          - site-abc123.b-cdn.net
                      dns_status:
                        type: object
                        properties:
                          state:
                            type: string
                            examples:
                              - pending
                          records:
                            type: array
                            items:
                              type: object
                              properties:
                                type:
                                  type: string
                                  examples:
                                    - CNAME
                                host:
                                  type: string
                                  examples:
                                    - _abc123.example.com
                                value:
                                  type: string
                                  examples:
                                    - _def456.acm-validations.aws
                                purpose:
                                  type: string
                                  examples:
                                    - validation
                            examples:
                              -
                                -
                                  type: CNAME
                                  host: _abc123.example.com
                                  value: _def456.acm-validations.aws
                                  purpose: validation
                                -
                                  type: CNAME
                                  host: example.com
                                  value: site-abc123.b-cdn.net
                                  purpose: traffic
                          last_checked_at:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                      custom_domain_certificate:
                        type: object
                        properties:
                          status:
                            type: string
                            examples:
                              - pending
                          dns_validation_records:
                            type: array
                            items:
                              type: object
                              properties:
                                name:
                                  type: string
                                  examples:
                                    - _abc123.example.com
                                type:
                                  type: string
                                  examples:
                                    - CNAME
                                value:
                                  type: string
                                  examples:
                                    - _def456.acm-validations.aws
                            examples:
                              -
                                -
                                  name: _abc123.example.com
                                  type: CNAME
                                  value: _def456.acm-validations.aws
                      subdomain:
                        type: string
                        examples:
                          - wispy-dust
                      database_host:
                        type: string
                        examples:
                          - cluster.abc123.us-east-1.rds.amazonaws.com
                      database_name:
                        type: string
                        examples:
                          - db_01jfgxk4nqrst5vwx9yz0abcde
                      pending_domain_change:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdh
                          status:
                            type: string
                            examples:
                              - pending
                          status_label:
                            type: string
                            examples:
                              - Pending
                          old_domain:
                            type: string
                            examples:
                              - old.example.com
                          new_domain:
                            type: string
                            examples:
                              - example.com
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Environment update initiated, domain change in progress'
                  http_status:
                    type: integer
                    examples:
                      - 202
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdg
                      vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id: cust_12345
                      name: production
                      is_production: true
                      status: active
                      status_label: Active
                      provisioning_step: complete
                      provisioning_step_label: Complete
                      failure_reason: null
                      php_version: '8.3'
                      tags:
                        - live
                        - primary
                      platform_domain: wispy-dust--prod.vectorpages.com
                      custom_domain: example.com
                      dns_target: site-abc123.b-cdn.net
                      dns_status:
                        state: pending
                        records:
                          -
                            type: CNAME
                            host: _abc123.example.com
                            value: _def456.acm-validations.aws
                            purpose: validation
                          -
                            type: CNAME
                            host: example.com
                            value: site-abc123.b-cdn.net
                            purpose: traffic
                        last_checked_at: null
                      custom_domain_certificate:
                        status: pending
                        dns_validation_records:
                          -
                            name: _abc123.example.com
                            type: CNAME
                            value: _def456.acm-validations.aws
                      subdomain: wispy-dust
                      database_host: cluster.abc123.us-east-1.rds.amazonaws.com
                      database_name: db_01jfgxk4nqrst5vwx9yz0abcde
                      pending_domain_change:
                        id: 01jfgxk4nqrst5vwx9yz0abcdh
                        status: pending
                        status_label: Pending
                        old_domain: old.example.com
                        new_domain: example.com
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Environment update initiated, domain change in progress'
                    http_status: 202
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Environment not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Environment not found'
                    http_status: 404
        422:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Environment Not Active'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      errors:
                        type: object
                        properties:
                          environment:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - 'Environment must be in active state to change domain.'
                      message:
                        type: string
                        examples:
                          - 'Environment must be in active state to change domain.'
                      http_status:
                        type: integer
                        examples:
                          - 422
                    examples:
                      -
                        data: {  }
                        errors:
                          environment:
                            - 'Environment must be in active state to change domain.'
                        message: 'Environment must be in active state to change domain.'
                        http_status: 422
                  -
                    description: 'Domain Change In Progress'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      errors:
                        type: object
                        properties:
                          domain_change:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - 'A domain change is already in progress for this environment.'
                      message:
                        type: string
                        examples:
                          - 'A domain change is already in progress for this environment.'
                      http_status:
                        type: integer
                        examples:
                          - 422
                    examples:
                      -
                        data: {  }
                        errors:
                          domain_change:
                            - 'A domain change is already in progress for this environment.'
                        message: 'A domain change is already in progress for this environment.'
                        http_status: 422
      tags:
        - Environments
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                custom_domain:
                  type:
                    - string
                    - 'null'
                  description: 'A custom vanity domain for this environment. Must be a valid domain name. When changed, triggers infrastructure updates (CDN, DNS, SSL).'
                  examples:
                    - example.com
                tags:
                  type: array
                  description: 'Array of tags for categorizing the environment. Each tag must be slug format (lowercase letters, numbers, hyphens), max 100 characters, and unique. Pass `null` to clear tags.'
                  items:
                    type: string
                  examples:
                    -
                      - live
                      - updated
    delete:
      summary: 'Delete Environment'
      operationId: deleteEnvironment
      description: "Initiates deletion of an environment. This terminates all associated\ncontainers, deployments, and CDN resources. The environment status\ntransitions to `terminating` and eventually `terminated`.\n\nThis operation is irreversible. All environment data will be permanently removed."
      parameters: []
      responses:
        202:
          description: Accepted
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdg
                      vector_site_id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id:
                        type: string
                        examples:
                          - cust_12345
                      name:
                        type: string
                        examples:
                          - production
                      is_production:
                        type: boolean
                        examples:
                          - true
                      status:
                        type: string
                        examples:
                          - terminating
                      status_label:
                        type: string
                        examples:
                          - Terminating
                      provisioning_step:
                        type: string
                        examples:
                          - complete
                      provisioning_step_label:
                        type: string
                        examples:
                          - Complete
                      failure_reason:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      php_version:
                        type: string
                        examples:
                          - '8.3'
                      tags:
                        type: array
                        examples:
                          - []
                      platform_domain:
                        type: string
                        examples:
                          - wispy-dust--prod.vectorpages.com
                      custom_domain:
                        type: string
                        examples:
                          - example.com
                      dns_target:
                        type: string
                        examples:
                          - site-abc123.b-cdn.net
                      dns_status:
                        type: object
                        properties:
                          state:
                            type: string
                            examples:
                              - verified
                          records:
                            type: array
                            examples:
                              - []
                          last_checked_at:
                            type: string
                            examples:
                              - '2025-01-15T12:05:00+00:00'
                      custom_domain_certificate:
                        type: object
                        properties:
                          status:
                            type: string
                            examples:
                              - issued
                          dns_validation_records:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                      subdomain:
                        type: string
                        examples:
                          - wispy-dust
                      database_host:
                        type: string
                        examples:
                          - cluster.abc123.us-east-1.rds.amazonaws.com
                      database_name:
                        type: string
                        examples:
                          - db_01jfgxk4nqrst5vwx9yz0abcde
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Environment deletion initiated'
                  http_status:
                    type: integer
                    examples:
                      - 202
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdg
                      vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id: cust_12345
                      name: production
                      is_production: true
                      status: terminating
                      status_label: Terminating
                      provisioning_step: complete
                      provisioning_step_label: Complete
                      failure_reason: null
                      php_version: '8.3'
                      tags: []
                      platform_domain: wispy-dust--prod.vectorpages.com
                      custom_domain: example.com
                      dns_target: site-abc123.b-cdn.net
                      dns_status:
                        state: verified
                        records: []
                        last_checked_at: '2025-01-15T12:05:00+00:00'
                      custom_domain_certificate:
                        status: issued
                        dns_validation_records: null
                      subdomain: wispy-dust
                      database_host: cluster.abc123.us-east-1.rds.amazonaws.com
                      database_name: db_01jfgxk4nqrst5vwx9yz0abcde
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Environment deletion initiated'
                    http_status: 202
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Environment not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Environment not found'
                    http_status: 404
      tags:
        - Environments
    parameters:
      -
        in: path
        name: env
        description: 'The environment ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdg
  '/api/v1/vector/environments/{env}/secrets':
    get:
      summary: 'List Secrets'
      operationId: environmentsSecretsListSecrets
      description: "Retrieves a paginated list of all secrets and environment variables for a specific environment.\nValues are only included for environment variables (`is_secret=false`)."
      parameters:
        -
          in: query
          name: per_page
          description: 'Number of items per page (max 100). Default: 15.'
          required: false
          schema:
            type: integer
            description: 'Number of items per page (max 100). Default: 15.'
            examples:
              - 10
        -
          in: query
          name: page
          description: 'Page number for pagination.'
          required: false
          schema:
            type: integer
            description: 'Page number for pagination.'
            examples:
              - 1
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          examples:
                            - 01jfgxk4nqrst5vwx9yz0abcde
                        key:
                          type: string
                          examples:
                            - STRIPE_SECRET_KEY
                        is_secret:
                          type: boolean
                          examples:
                            - true
                        created_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                        updated_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                    examples:
                      -
                        -
                          id: 01jfgxk4nqrst5vwx9yz0abcde
                          key: STRIPE_SECRET_KEY
                          is_secret: true
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                        -
                          id: 01jfgxk4nqrst5vwx9yz0abcdf
                          key: APP_ENV
                          is_secret: false
                          value: production
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                  links:
                    type: object
                    properties: {  }
                  meta:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Environment secrets retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      -
                        id: 01jfgxk4nqrst5vwx9yz0abcde
                        key: STRIPE_SECRET_KEY
                        is_secret: true
                        created_at: '2025-01-15T12:00:00+00:00'
                        updated_at: '2025-01-15T12:00:00+00:00'
                      -
                        id: 01jfgxk4nqrst5vwx9yz0abcdf
                        key: APP_ENV
                        is_secret: false
                        value: production
                        created_at: '2025-01-15T12:00:00+00:00'
                        updated_at: '2025-01-15T12:00:00+00:00'
                    links: {  }
                    meta: {  }
                    message: 'Environment secrets retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Environment not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Environment not found'
                    http_status: 404
      tags:
        - Environments
    post:
      summary: 'Create Secret'
      operationId: environmentsSecretsCreateSecret
      description: "Creates a new secret or environment variable for a specific environment.\nIt will be available to this environment during deployment.\n\nSet `is_secret` to `false` to create a plain environment variable instead of a secret.\nEnvironment variables are stored as Lambda env vars (cheaper) and their values are\nreturned in API responses. Secrets are stored in AWS Secrets Manager and their values\nare never returned.\n\nThe following keys are reserved and cannot be used:\n<kbd>AUTH_KEY</kbd>, <kbd>SECURE_AUTH_KEY</kbd>, <kbd>LOGGED_IN_KEY</kbd>, <kbd>NONCE_KEY</kbd>, <kbd>AUTH_SALT</kbd>, <kbd>SECURE_AUTH_SALT</kbd>, <kbd>LOGGED_IN_SALT</kbd>, <kbd>NONCE_SALT</kbd>, <kbd>AUTOMATIC_UPDATER_DISABLED</kbd>, <kbd>DISABLE_WP_CRON</kbd>, <kbd>DISALLOW_FILE_EDIT</kbd>, <kbd>DISALLOW_FILE_MODS</kbd>, <kbd>DOMAIN_CURRENT_SITE</kbd>, <kbd>WP_HOME</kbd>, <kbd>WP_SITEURL</kbd>, <kbd>YMIR_ASSETS_PATH</kbd>, <kbd>YMIR_ASSETS_URL</kbd>, <kbd>YMIR_CACHE_PREFIX</kbd>, <kbd>YMIR_CACHE_TABLE</kbd>, <kbd>YMIR_CDN_IMAGE_PROCESSING_ENABLED</kbd>, <kbd>YMIR_DISTRIBUTION_ID</kbd>, <kbd>YMIR_DOMAIN_NAMES</kbd>, <kbd>YMIR_ENVIRONMENT</kbd>, <kbd>YMIR_MAX_EXECUTION_TIME</kbd>, <kbd>YMIR_PRIMARY_DOMAIN_NAME</kbd>, <kbd>YMIR_PROJECT_TYPE</kbd>, <kbd>YMIR_PUBLIC_STORE</kbd>, <kbd>YMIR_REDIS_ENDPOINT</kbd>, <kbd>YMIR_SECRETS_PATH</kbd>, <kbd>YMIR_UPLOAD_URL</kbd>, <kbd>_HANDLER</kbd>, <kbd>AWS_ACCESS_KEY_ID</kbd>, <kbd>AWS_EXECUTION_ENV</kbd>, <kbd>AWS_LAMBDA_FUNCTION_MEMORY_SIZE</kbd>, <kbd>AWS_LAMBDA_FUNCTION_NAME</kbd>, <kbd>AWS_LAMBDA_FUNCTION_VERSION</kbd>, <kbd>AWS_LAMBDA_LOG_GROUP_NAME</kbd>, <kbd>AWS_LAMBDA_LOG_STREAM_NAME</kbd>, <kbd>AWS_LAMBDA_RUNTIME_API</kbd>, <kbd>AWS_REGION</kbd>, <kbd>AWS_SECRET_ACCESS_KEY</kbd>, <kbd>AWS_SESSION_TOKEN</kbd>, <kbd>LAMBDA_RUNTIME_DIR</kbd>, <kbd>LAMBDA_TASK_ROOT</kbd>, <kbd>TZ</kbd>"
      parameters: []
      responses:
        201:
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      key:
                        type: string
                        examples:
                          - STRIPE_SECRET_KEY
                      is_secret:
                        type: boolean
                        examples:
                          - true
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Environment secret created successfully'
                  http_status:
                    type: integer
                    examples:
                      - 201
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcde
                      key: STRIPE_SECRET_KEY
                      is_secret: true
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Environment secret created successfully'
                    http_status: 201
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Environment not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Environment not found'
                    http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      key:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The secret key is required.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      key:
                        - 'The secret key is required.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Environments
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                key:
                  type: string
                  description: 'The secret key name. Must start with a letter and contain only uppercase letters, numbers, and underscores.'
                  examples:
                    - STRIPE_SECRET_KEY
                value:
                  type: string
                  description: 'The secret value.'
                  examples:
                    - sk_live_xxxx
                is_secret:
                  type: boolean
                  description: 'Whether this is a secret (stored in AWS Secrets Manager) or a plain environment variable. Default: true.'
                  examples:
                    - true
              required:
                - key
                - value
    parameters:
      -
        in: path
        name: env
        description: 'The environment ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdg
  '/api/v1/vector/secrets/{secret}':
    get:
      summary: 'Get Secret'
      operationId: environmentsSecretsGetSecret
      description: "Retrieves details of a specific environment secret or variable.\nThe value is only included for environment variables (`is_secret=false`)."
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: Secret
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcde
                          key:
                            type: string
                            examples:
                              - STRIPE_SECRET_KEY
                          is_secret:
                            type: boolean
                            examples:
                              - true
                          created_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          updated_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                      message:
                        type: string
                        examples:
                          - 'Environment secret retrieved successfully'
                      http_status:
                        type: integer
                        examples:
                          - 200
                    examples:
                      -
                        data:
                          id: 01jfgxk4nqrst5vwx9yz0abcde
                          key: STRIPE_SECRET_KEY
                          is_secret: true
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                        message: 'Environment secret retrieved successfully'
                        http_status: 200
                  -
                    description: 'Environment Variable'
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdf
                          key:
                            type: string
                            examples:
                              - APP_ENV
                          is_secret:
                            type: boolean
                            examples:
                              - false
                          value:
                            type: string
                            examples:
                              - production
                          created_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          updated_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                      message:
                        type: string
                        examples:
                          - 'Environment secret retrieved successfully'
                      http_status:
                        type: integer
                        examples:
                          - 200
                    examples:
                      -
                        data:
                          id: 01jfgxk4nqrst5vwx9yz0abcdf
                          key: APP_ENV
                          is_secret: false
                          value: production
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                        message: 'Environment secret retrieved successfully'
                        http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Environment secret not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Environment secret not found'
                    http_status: 404
      tags:
        - Environments
    put:
      summary: 'Update Secret'
      operationId: environmentsSecretsUpdateSecret
      description: "Updates an existing environment secret or variable. You can update the key, value,\nis_secret flag, or any combination.\n\nThe following keys are reserved and cannot be used:\n<kbd>AUTH_KEY</kbd>, <kbd>SECURE_AUTH_KEY</kbd>, <kbd>LOGGED_IN_KEY</kbd>, <kbd>NONCE_KEY</kbd>, <kbd>AUTH_SALT</kbd>, <kbd>SECURE_AUTH_SALT</kbd>, <kbd>LOGGED_IN_SALT</kbd>, <kbd>NONCE_SALT</kbd>, <kbd>AUTOMATIC_UPDATER_DISABLED</kbd>, <kbd>DISABLE_WP_CRON</kbd>, <kbd>DISALLOW_FILE_EDIT</kbd>, <kbd>DISALLOW_FILE_MODS</kbd>, <kbd>DOMAIN_CURRENT_SITE</kbd>, <kbd>WP_HOME</kbd>, <kbd>WP_SITEURL</kbd>, <kbd>YMIR_ASSETS_PATH</kbd>, <kbd>YMIR_ASSETS_URL</kbd>, <kbd>YMIR_CACHE_PREFIX</kbd>, <kbd>YMIR_CACHE_TABLE</kbd>, <kbd>YMIR_CDN_IMAGE_PROCESSING_ENABLED</kbd>, <kbd>YMIR_DISTRIBUTION_ID</kbd>, <kbd>YMIR_DOMAIN_NAMES</kbd>, <kbd>YMIR_ENVIRONMENT</kbd>, <kbd>YMIR_MAX_EXECUTION_TIME</kbd>, <kbd>YMIR_PRIMARY_DOMAIN_NAME</kbd>, <kbd>YMIR_PROJECT_TYPE</kbd>, <kbd>YMIR_PUBLIC_STORE</kbd>, <kbd>YMIR_REDIS_ENDPOINT</kbd>, <kbd>YMIR_SECRETS_PATH</kbd>, <kbd>YMIR_UPLOAD_URL</kbd>, <kbd>_HANDLER</kbd>, <kbd>AWS_ACCESS_KEY_ID</kbd>, <kbd>AWS_EXECUTION_ENV</kbd>, <kbd>AWS_LAMBDA_FUNCTION_MEMORY_SIZE</kbd>, <kbd>AWS_LAMBDA_FUNCTION_NAME</kbd>, <kbd>AWS_LAMBDA_FUNCTION_VERSION</kbd>, <kbd>AWS_LAMBDA_LOG_GROUP_NAME</kbd>, <kbd>AWS_LAMBDA_LOG_STREAM_NAME</kbd>, <kbd>AWS_LAMBDA_RUNTIME_API</kbd>, <kbd>AWS_REGION</kbd>, <kbd>AWS_SECRET_ACCESS_KEY</kbd>, <kbd>AWS_SESSION_TOKEN</kbd>, <kbd>LAMBDA_RUNTIME_DIR</kbd>, <kbd>LAMBDA_TASK_ROOT</kbd>, <kbd>TZ</kbd>"
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      key:
                        type: string
                        examples:
                          - STRIPE_API_KEY
                      is_secret:
                        type: boolean
                        examples:
                          - true
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Environment secret updated successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcde
                      key: STRIPE_API_KEY
                      is_secret: true
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Environment secret updated successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Environment secret not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Environment secret not found'
                    http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      key:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The secret key must start with a letter and contain only uppercase letters, numbers, and underscores.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      key:
                        - 'The secret key must start with a letter and contain only uppercase letters, numbers, and underscores.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Environments
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                key:
                  type: string
                  description: 'The new secret key name. Must start with a letter and contain only uppercase letters, numbers, and underscores.'
                  examples:
                    - STRIPE_API_KEY
                value:
                  type: string
                  description: 'The new secret value.'
                  examples:
                    - sk_live_yyyy
                is_secret:
                  type: boolean
                  description: 'Whether this is a secret or a plain environment variable.'
                  examples:
                    - true
    delete:
      summary: 'Delete Secret'
      operationId: environmentsSecretsDeleteSecret
      description: 'Deletes an environment secret.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      key:
                        type: string
                        examples:
                          - STRIPE_SECRET_KEY
                      is_secret:
                        type: boolean
                        examples:
                          - true
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Environment secret deleted successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcde
                      key: STRIPE_SECRET_KEY
                      is_secret: true
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Environment secret deleted successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Environment secret not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Environment secret not found'
                    http_status: 404
      tags:
        - Environments
    parameters:
      -
        in: path
        name: secret
        description: 'The secret ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/environments/{env}/deployments':
    get:
      summary: 'List Deployments'
      operationId: environmentsDeploymentsListDeployments
      description: "Retrieves a paginated list of all deployments for a specific environment,\nordered by most recent first."
      parameters:
        -
          in: query
          name: per_page
          description: 'Number of items per page (max 100). Default: 15.'
          required: false
          schema:
            type: integer
            description: 'Number of items per page (max 100). Default: 15.'
            examples:
              - 25
        -
          in: query
          name: page
          description: 'Page number for pagination. Default: 1.'
          required: false
          schema:
            type: integer
            description: 'Page number for pagination. Default: 1.'
            examples:
              - 1
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          examples:
                            - 01jfgxk4nqrst5vwx9yz0abcdh
                        vector_environment_id:
                          type: string
                          examples:
                            - 01jfgxk4nqrst5vwx9yz0abcdg
                        status:
                          type: string
                          examples:
                            - deployed
                        status_label:
                          type: string
                          examples:
                            - Deployed
                        stdout:
                          type: string
                          examples:
                            - 'Deployment output...'
                        stderr:
                          type:
                            - string
                            - 'null'
                          examples:
                            - null
                        actor:
                          type: string
                          examples:
                            - user@example.com
                        environment:
                          type: object
                          properties:
                            id:
                              type: string
                              examples:
                                - 01jfgxk4nqrst5vwx9yz0abcdg
                            vector_site_id:
                              type: string
                              examples:
                                - 01jfgxk4nqrst5vwx9yz0abcde
                            your_customer_id:
                              type: string
                              examples:
                                - cust_12345
                            name:
                              type: string
                              examples:
                                - production
                            is_production:
                              type: boolean
                              examples:
                                - true
                            status:
                              type: string
                              examples:
                                - active
                            status_label:
                              type: string
                              examples:
                                - Active
                            php_version:
                              type: string
                              examples:
                                - '8.3'
                            tags:
                              type: array
                              items:
                                type: string
                              examples:
                                -
                                  - wordpress
                            fqdn:
                              type: string
                              examples:
                                - example.com
                            custom_domain:
                              type: string
                              examples:
                                - example.com
                            subdomain:
                              type: string
                              examples:
                                - wispy-dust
                            created_at:
                              type: string
                              examples:
                                - '2025-01-15T12:00:00+00:00'
                            updated_at:
                              type: string
                              examples:
                                - '2025-01-15T12:00:00+00:00'
                        created_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                        updated_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                    examples:
                      -
                        -
                          id: 01jfgxk4nqrst5vwx9yz0abcdh
                          vector_environment_id: 01jfgxk4nqrst5vwx9yz0abcdg
                          status: deployed
                          status_label: Deployed
                          stdout: 'Deployment output...'
                          stderr: null
                          actor: user@example.com
                          environment:
                            id: 01jfgxk4nqrst5vwx9yz0abcdg
                            vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                            your_customer_id: cust_12345
                            name: production
                            is_production: true
                            status: active
                            status_label: Active
                            php_version: '8.3'
                            tags:
                              - wordpress
                            fqdn: example.com
                            custom_domain: example.com
                            subdomain: wispy-dust
                            created_at: '2025-01-15T12:00:00+00:00'
                            updated_at: '2025-01-15T12:00:00+00:00'
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                  links:
                    type: object
                    properties: {  }
                  meta:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Deployments retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      -
                        id: 01jfgxk4nqrst5vwx9yz0abcdh
                        vector_environment_id: 01jfgxk4nqrst5vwx9yz0abcdg
                        status: deployed
                        status_label: Deployed
                        stdout: 'Deployment output...'
                        stderr: null
                        actor: user@example.com
                        environment:
                          id: 01jfgxk4nqrst5vwx9yz0abcdg
                          vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                          your_customer_id: cust_12345
                          name: production
                          is_production: true
                          status: active
                          status_label: Active
                          php_version: '8.3'
                          tags:
                            - wordpress
                          fqdn: example.com
                          custom_domain: example.com
                          subdomain: wispy-dust
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                        created_at: '2025-01-15T12:00:00+00:00'
                        updated_at: '2025-01-15T12:00:00+00:00'
                    links: {  }
                    meta: {  }
                    message: 'Deployments retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Environment Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Environment not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Environment not found'
                    http_status: 404
      tags:
        - Environments
    post:
      summary: 'Create Deployment'
      operationId: environmentsDeploymentsCreateDeployment
      description: "Triggers a new deployment for the environment. The deployment starts with\n`pending` status and progresses through `deploying` to either `deployed`\nor `failed`.\n\nThe authenticated user is recorded as the deployment actor."
      parameters: []
      responses:
        201:
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdh
                      vector_environment_id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdg
                      status:
                        type: string
                        examples:
                          - pending
                      status_label:
                        type: string
                        examples:
                          - Pending
                      stdout:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      stderr:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      actor:
                        type: string
                        examples:
                          - user@example.com
                      environment:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdg
                          vector_site_id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcde
                          your_customer_id:
                            type: string
                            examples:
                              - cust_12345
                          name:
                            type: string
                            examples:
                              - production
                          is_production:
                            type: boolean
                            examples:
                              - true
                          status:
                            type: string
                            examples:
                              - active
                          status_label:
                            type: string
                            examples:
                              - Active
                          php_version:
                            type: string
                            examples:
                              - '8.3'
                          tags:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - wordpress
                          fqdn:
                            type: string
                            examples:
                              - example.com
                          custom_domain:
                            type: string
                            examples:
                              - example.com
                          subdomain:
                            type: string
                            examples:
                              - wispy-dust
                          created_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          updated_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Deployment initiated'
                  http_status:
                    type: integer
                    examples:
                      - 201
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdh
                      vector_environment_id: 01jfgxk4nqrst5vwx9yz0abcdg
                      status: pending
                      status_label: Pending
                      stdout: null
                      stderr: null
                      actor: user@example.com
                      environment:
                        id: 01jfgxk4nqrst5vwx9yz0abcdg
                        vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                        your_customer_id: cust_12345
                        name: production
                        is_production: true
                        status: active
                        status_label: Active
                        php_version: '8.3'
                        tags:
                          - wordpress
                        fqdn: example.com
                        custom_domain: example.com
                        subdomain: wispy-dust
                        created_at: '2025-01-15T12:00:00+00:00'
                        updated_at: '2025-01-15T12:00:00+00:00'
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Deployment initiated'
                    http_status: 201
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Environment Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Environment not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Environment not found'
                    http_status: 404
      tags:
        - Environments
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                include_uploads:
                  type: boolean
                  description: 'Whether to include wp-content/uploads in the deployment. Defaults to false.'
                  examples:
                    - false
                include_database:
                  type: boolean
                  description: ''
                  examples:
                    - false
    parameters:
      -
        in: path
        name: env
        description: 'The environment ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdg
  '/api/v1/vector/deployments/{deployment}':
    get:
      summary: 'Get Deployment'
      operationId: environmentsDeploymentsGetDeployment
      description: 'Retrieves details of a specific deployment including output logs and actor information.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdh
                      vector_environment_id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdg
                      status:
                        type: string
                        examples:
                          - deployed
                      status_label:
                        type: string
                        examples:
                          - Deployed
                      stdout:
                        type: string
                        examples:
                          - "Building project...\nUploading assets...\nDeployment complete."
                      stderr:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      actor:
                        type: string
                        examples:
                          - user@example.com
                      environment:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdg
                          vector_site_id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcde
                          your_customer_id:
                            type: string
                            examples:
                              - cust_12345
                          name:
                            type: string
                            examples:
                              - production
                          is_production:
                            type: boolean
                            examples:
                              - true
                          status:
                            type: string
                            examples:
                              - active
                          status_label:
                            type: string
                            examples:
                              - Active
                          php_version:
                            type: string
                            examples:
                              - '8.3'
                          tags:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - wordpress
                          fqdn:
                            type: string
                            examples:
                              - example.com
                          custom_domain:
                            type: string
                            examples:
                              - example.com
                          subdomain:
                            type: string
                            examples:
                              - wispy-dust
                          created_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          updated_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Deployment retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdh
                      vector_environment_id: 01jfgxk4nqrst5vwx9yz0abcdg
                      status: deployed
                      status_label: Deployed
                      stdout: "Building project...\nUploading assets...\nDeployment complete."
                      stderr: null
                      actor: user@example.com
                      environment:
                        id: 01jfgxk4nqrst5vwx9yz0abcdg
                        vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                        your_customer_id: cust_12345
                        name: production
                        is_production: true
                        status: active
                        status_label: Active
                        php_version: '8.3'
                        tags:
                          - wordpress
                        fqdn: example.com
                        custom_domain: example.com
                        subdomain: wispy-dust
                        created_at: '2025-01-15T12:00:00+00:00'
                        updated_at: '2025-01-15T12:00:00+00:00'
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Deployment retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Deployment not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Deployment not found'
                    http_status: 404
      tags:
        - Environments
    parameters:
      -
        in: path
        name: deployment
        description: 'The deployment ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdh
  '/api/v1/vector/environments/{env}/ssl':
    get:
      summary: 'Get Status'
      operationId: environmentsSSLGetStatus
      description: 'Get the current SSL provisioning status for an environment.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdg
                      vector_site_id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id:
                        type: string
                        examples:
                          - cust_12345
                      name:
                        type: string
                        examples:
                          - production
                      is_production:
                        type: boolean
                        examples:
                          - true
                      status:
                        type: string
                        examples:
                          - active
                      status_label:
                        type: string
                        examples:
                          - Active
                      provisioning_step:
                        type: string
                        examples:
                          - complete
                      provisioning_step_label:
                        type: string
                        examples:
                          - Complete
                      failure_reason:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      php_version:
                        type: string
                        examples:
                          - '8.3'
                      tags:
                        type: array
                        examples:
                          - []
                      platform_domain:
                        type: string
                        examples:
                          - wispy-dust.vectorpages.com
                      custom_domain:
                        type: string
                        examples:
                          - example.com
                      subdomain:
                        type: string
                        examples:
                          - wispy-dust
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'SSL status retrieved'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdg
                      vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id: cust_12345
                      name: production
                      is_production: true
                      status: active
                      status_label: Active
                      provisioning_step: complete
                      provisioning_step_label: Complete
                      failure_reason: null
                      php_version: '8.3'
                      tags: []
                      platform_domain: wispy-dust.vectorpages.com
                      custom_domain: example.com
                      subdomain: wispy-dust
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'SSL status retrieved'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Environment not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Environment not found'
                    http_status: 404
      tags:
        - Environments
    parameters:
      -
        in: path
        name: env
        description: 'The environment ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdg
  '/api/v1/vector/environments/{env}/db/reset-password':
    post:
      summary: 'Reset Password'
      operationId: environmentsDatabasesResetPassword
      description: "Rotates the database password for a production environment via Ymir.\nThe old password is immediately invalidated.\n\n> [!WARNING]\n> The new password is returned ONLY in this response. Store it securely—it cannot be retrieved again.\n\n> [!NOTE]\n> After rotating the password, you must redeploy the environment for your application to pick up the new credentials."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdg
                      vector_site_id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id:
                        type: string
                        examples:
                          - cust_12345
                      name:
                        type: string
                        examples:
                          - production
                      is_production:
                        type: boolean
                        examples:
                          - true
                      status:
                        type: string
                        examples:
                          - active
                      status_label:
                        type: string
                        examples:
                          - Active
                      provisioning_step:
                        type: string
                        examples:
                          - complete
                      provisioning_step_label:
                        type: string
                        examples:
                          - Complete
                      failure_reason:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      php_version:
                        type: string
                        examples:
                          - '8.3'
                      tags:
                        type: array
                        examples:
                          - []
                      platform_domain:
                        type: string
                        examples:
                          - wispy-dust.vectorpages.com
                      custom_domain:
                        type: string
                        examples:
                          - example.com
                      subdomain:
                        type: string
                        examples:
                          - wispy-dust
                      database_user:
                        type: string
                        examples:
                          - user_abc123_production
                      database_password:
                        type: string
                        examples:
                          - 'aBcD1234!@#$EfGh5678'
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Database password reset successfully. Store the new password securely - it will not be shown again. Remember to redeploy your environment.'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdg
                      vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                      your_customer_id: cust_12345
                      name: production
                      is_production: true
                      status: active
                      status_label: Active
                      provisioning_step: complete
                      provisioning_step_label: Complete
                      failure_reason: null
                      php_version: '8.3'
                      tags: []
                      platform_domain: wispy-dust.vectorpages.com
                      custom_domain: example.com
                      subdomain: wispy-dust
                      database_user: user_abc123_production
                      database_password: 'aBcD1234!@#$EfGh5678'
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Database password reset successfully. Store the new password securely - it will not be shown again. Remember to redeploy your environment.'
                    http_status: 200
        400:
          description: 'No Database User'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Environment does not have a database user configured. Deploy the environment first.'
                  http_status:
                    type: integer
                    examples:
                      - 400
                examples:
                  -
                    data: {  }
                    message: 'Environment does not have a database user configured. Deploy the environment first.'
                    http_status: 400
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Environment not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Environment not found'
                    http_status: 404
        500:
          description: 'Rotation Failed'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Failed to rotate database password'
                  http_status:
                    type: integer
                    examples:
                      - 500
                examples:
                  -
                    data: {  }
                    message: 'Failed to rotate database password'
                    http_status: 500
      tags:
        - Environments
    parameters:
      -
        in: path
        name: env
        description: 'The environment ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdg
  '/api/v1/vector/environments/{env}/db/promote':
    post:
      summary: 'Create Database Promote'
      operationId: environmentsDatabasesCreateDatabasePromote
      description: "Promote the dev database to this environment. Exports the dev database,\nthen imports it into the environment's database."
      parameters: []
      responses:
        202:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdf
                      vector_environment_id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdg
                      vector_db_export_id:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      status:
                        type: string
                        examples:
                          - pending
                      status_label:
                        type: string
                        examples:
                          - Pending
                      options:
                        type: object
                        properties:
                          drop_tables:
                            type: boolean
                            examples:
                              - true
                          disable_foreign_keys:
                            type: boolean
                            examples:
                              - true
                          search_replace:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                      duration_ms:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      error_message:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      started_at:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      completed_at:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                  message:
                    type: string
                    examples:
                      - 'Database promote initiated'
                  http_status:
                    type: integer
                    examples:
                      - 202
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdf
                      vector_environment_id: 01jfgxk4nqrst5vwx9yz0abcdg
                      vector_db_export_id: null
                      status: pending
                      status_label: Pending
                      options:
                        drop_tables: true
                        disable_foreign_keys: true
                        search_replace: null
                      duration_ms: null
                      error_message: null
                      created_at: '2025-01-15T12:00:00+00:00'
                      started_at: null
                      completed_at: null
                    message: 'Database promote initiated'
                    http_status: 202
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Environment not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Environment not found'
                    http_status: 404
        422:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Validation Error'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      errors:
                        type: object
                        properties:
                          environment:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - 'Environment must be in active state to promote database.'
                      message:
                        type: string
                        examples:
                          - 'Environment must be in active state to promote database.'
                      http_status:
                        type: integer
                        examples:
                          - 422
                    examples:
                      -
                        data: {  }
                        errors:
                          environment:
                            - 'Environment must be in active state to promote database.'
                        message: 'Environment must be in active state to promote database.'
                        http_status: 422
                  -
                    description: 'Already In Progress'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      errors:
                        type: object
                        properties:
                          promote:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - 'A database promote is already in progress for this environment.'
                      message:
                        type: string
                        examples:
                          - 'A database promote is already in progress for this environment.'
                      http_status:
                        type: integer
                        examples:
                          - 422
                    examples:
                      -
                        data: {  }
                        errors:
                          promote:
                            - 'A database promote is already in progress for this environment.'
                        message: 'A database promote is already in progress for this environment.'
                        http_status: 422
      tags:
        - Environments
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                drop_tables:
                  type: boolean
                  description: 'Whether to drop existing tables before importing. Defaults to true.'
                  examples:
                    - true
                disable_foreign_keys:
                  type: boolean
                  description: 'Whether to disable foreign key checks during import. Defaults to true.'
                  examples:
                    - true
    parameters:
      -
        in: path
        name: env
        description: 'The environment ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/environments/{env}/db/promotes/{promote}':
    get:
      summary: 'Get Promote Status'
      operationId: environmentsDatabasesGetPromoteStatus
      description: 'Get the current status of a database promote operation.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: Completed
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdf
                          vector_environment_id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdg
                          vector_db_export_id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcde
                          status:
                            type: string
                            examples:
                              - completed
                          status_label:
                            type: string
                            examples:
                              - Completed
                          options:
                            type: object
                            properties:
                              drop_tables:
                                type: boolean
                                examples:
                                  - true
                              disable_foreign_keys:
                                type: boolean
                                examples:
                                  - true
                              search_replace:
                                type:
                                  - string
                                  - 'null'
                                examples:
                                  - null
                          duration_ms:
                            type: integer
                            examples:
                              - 12500
                          error_message:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          created_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          started_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          completed_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                      message:
                        type: string
                        examples:
                          - 'Database promote retrieved successfully'
                      http_status:
                        type: integer
                        examples:
                          - 200
                    examples:
                      -
                        data:
                          id: 01jfgxk4nqrst5vwx9yz0abcdf
                          vector_environment_id: 01jfgxk4nqrst5vwx9yz0abcdg
                          vector_db_export_id: 01jfgxk4nqrst5vwx9yz0abcde
                          status: completed
                          status_label: Completed
                          options:
                            drop_tables: true
                            disable_foreign_keys: true
                            search_replace: null
                          duration_ms: 12500
                          error_message: null
                          created_at: '2025-01-15T12:00:00+00:00'
                          started_at: '2025-01-15T12:00:00+00:00'
                          completed_at: '2025-01-15T12:00:00+00:00'
                        message: 'Database promote retrieved successfully'
                        http_status: 200
                  -
                    description: 'In Progress'
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdf
                          vector_environment_id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdg
                          vector_db_export_id:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          status:
                            type: string
                            examples:
                              - exporting
                          status_label:
                            type: string
                            examples:
                              - Exporting
                          options:
                            type: object
                            properties:
                              drop_tables:
                                type: boolean
                                examples:
                                  - true
                              disable_foreign_keys:
                                type: boolean
                                examples:
                                  - true
                              search_replace:
                                type:
                                  - string
                                  - 'null'
                                examples:
                                  - null
                          duration_ms:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          error_message:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          created_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          started_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          completed_at:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                      message:
                        type: string
                        examples:
                          - 'Database promote retrieved successfully'
                      http_status:
                        type: integer
                        examples:
                          - 200
                    examples:
                      -
                        data:
                          id: 01jfgxk4nqrst5vwx9yz0abcdf
                          vector_environment_id: 01jfgxk4nqrst5vwx9yz0abcdg
                          vector_db_export_id: null
                          status: exporting
                          status_label: Exporting
                          options:
                            drop_tables: true
                            disable_foreign_keys: true
                            search_replace: null
                          duration_ms: null
                          error_message: null
                          created_at: '2025-01-15T12:00:00+00:00'
                          started_at: '2025-01-15T12:00:00+00:00'
                          completed_at: null
                        message: 'Database promote retrieved successfully'
                        http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Promote not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Promote not found'
                    http_status: 404
      tags:
        - Environments
    parameters:
      -
        in: path
        name: env
        description: 'The environment ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
      -
        in: path
        name: promote
        description: 'The promote ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdf
  '/api/v1/vector/environments/{env}/domain-changes/{domainChange}':
    get:
      summary: 'Get Domain Change Status'
      operationId: environmentsDomainsGetDomainChangeStatus
      description: 'Get the current status of a domain change operation.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdh
                      vector_environment_id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      status:
                        type: string
                        examples:
                          - completed
                      status_label:
                        type: string
                        examples:
                          - Completed
                      old_domain:
                        type: string
                        examples:
                          - wispy-dust.vectorpages.com
                      new_domain:
                        type: string
                        examples:
                          - wispy-dust.vectorpages.com
                      old_custom_domain:
                        type: string
                        examples:
                          - example.org
                      new_custom_domain:
                        type: string
                        examples:
                          - example.com
                      error_message:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      duration_ms:
                        type: integer
                        examples:
                          - 12450
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      started_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      completed_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Domain change retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdh
                      vector_environment_id: 01jfgxk4nqrst5vwx9yz0abcde
                      status: completed
                      status_label: Completed
                      old_domain: wispy-dust.vectorpages.com
                      new_domain: wispy-dust.vectorpages.com
                      old_custom_domain: example.org
                      new_custom_domain: example.com
                      error_message: null
                      duration_ms: 12450
                      created_at: '2025-01-15T12:00:00+00:00'
                      started_at: '2025-01-15T12:00:00+00:00'
                      completed_at: '2025-01-15T12:00:00+00:00'
                    message: 'Domain change retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Domain change not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Domain change not found'
                    http_status: 404
      tags:
        - Environments
    parameters:
      -
        in: path
        name: env
        description: 'The environment ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
      -
        in: path
        name: domainChange
        description: 'The domain change ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdh
  '/api/v1/vector/sites/{site}/environments':
    post:
      summary: 'Create Environment'
      operationId: createEnvironment
      description: "Creates a new environment for a site. The environment is created with a\n`pending` status and will transition to `active` once provisioning completes.\n\nEach environment gets a unique auto-generated subdomain and uses the site's\nconfigured domain.\n\n**Production environments:** Only one environment per site can be marked as\nproduction (`is_production: true`). Production environments receive CDN\nintegration via Bunny.net when a `custom_domain` is supplied.\n\n**Custom domain:** Optional for any environment. When supplied, ACM certificate\nprovisioning is initiated asynchronously and — for production environments —\nthe hostname is attached to the Bunny pull zone. The DNS validation records\nand the CDN target are not available in the create response; poll the\nenvironment (GET) to retrieve `custom_domain_certificate.dns_validation_records`\nand `dns_target` once they become available."
      parameters: []
      responses:
        201:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: Created
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdg
                          vector_site_id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcde
                          your_customer_id:
                            type: string
                            examples:
                              - cust_12345
                          name:
                            type: string
                            examples:
                              - production
                          is_production:
                            type: boolean
                            examples:
                              - true
                          status:
                            type: string
                            examples:
                              - pending
                          status_label:
                            type: string
                            examples:
                              - Pending
                          provisioning_step:
                            type: string
                            examples:
                              - pending
                          provisioning_step_label:
                            type: string
                            examples:
                              - Queued
                          failure_reason:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          php_version:
                            type: string
                            examples:
                              - '8.3'
                          tags:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - live
                                - primary
                          platform_domain:
                            type: string
                            examples:
                              - wispy-dust--prod.vectorpages.com
                          custom_domain:
                            type: string
                            examples:
                              - example.com
                          dns_target:
                            type: string
                            examples:
                              - site-abc123.b-cdn.net
                          dns_status:
                            type: object
                            properties:
                              state:
                                type: string
                                examples:
                                  - pending
                              records:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    type:
                                      type: string
                                      examples: [CNAME]
                                    host:
                                      type: string
                                      examples: [example.com]
                                    value:
                                      type: string
                                      examples: [site-abc123.b-cdn.net]
                                    purpose:
                                      type: string
                                      examples: [traffic]
                                examples:
                                  -
                                    -
                                      type: CNAME
                                      host: example.com
                                      value: site-abc123.b-cdn.net
                                      purpose: traffic
                              last_checked_at:
                                type:
                                  - string
                                  - 'null'
                                examples:
                                  - null
                          custom_domain_certificate:
                            type: object
                            properties:
                              status:
                                type: string
                                examples:
                                  - pending
                              dns_validation_records:
                                type:
                                  - string
                                  - 'null'
                                examples:
                                  - null
                          subdomain:
                            type: string
                            examples:
                              - wispy-dust
                          database_host:
                            type: string
                            examples:
                              - cluster.abc123.us-east-1.rds.amazonaws.com
                          database_name:
                            type: string
                            examples:
                              - db_01jfgxk4nqrst5vwx9yz0abcde
                          created_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          updated_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                      message:
                        type: string
                        examples:
                          - 'Environment creation initiated'
                      http_status:
                        type: integer
                        examples:
                          - 201
                    examples:
                      -
                        data:
                          id: 01jfgxk4nqrst5vwx9yz0abcdg
                          vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                          your_customer_id: cust_12345
                          name: production
                          is_production: true
                          status: pending
                          status_label: Pending
                          provisioning_step: pending
                          provisioning_step_label: Queued
                          failure_reason: null
                          php_version: '8.3'
                          tags:
                            - live
                            - primary
                          platform_domain: wispy-dust--prod.vectorpages.com
                          custom_domain: example.com
                          dns_target: site-abc123.b-cdn.net
                          dns_status:
                            state: pending
                            records:
                              -
                                type: CNAME
                                host: example.com
                                value: site-abc123.b-cdn.net
                                purpose: traffic
                            last_checked_at: null
                          custom_domain_certificate:
                            status: pending
                            dns_validation_records: null
                          subdomain: wispy-dust
                          database_host: cluster.abc123.us-east-1.rds.amazonaws.com
                          database_name: db_01jfgxk4nqrst5vwx9yz0abcde
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                        message: 'Environment creation initiated'
                        http_status: 201
                  -
                    description: 'Created without custom domain'
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdg
                          vector_site_id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcde
                          your_customer_id:
                            type: string
                            examples:
                              - cust_12345
                          name:
                            type: string
                            examples:
                              - staging-2
                          is_production:
                            type: boolean
                            examples:
                              - false
                          status:
                            type: string
                            examples:
                              - pending
                          status_label:
                            type: string
                            examples:
                              - Pending
                          provisioning_step:
                            type: string
                            examples:
                              - pending
                          provisioning_step_label:
                            type: string
                            examples:
                              - Queued
                          failure_reason:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          php_version:
                            type: string
                            examples:
                              - '8.3'
                          tags:
                            type: array
                            examples:
                              - []
                          platform_domain:
                            type: string
                            examples:
                              - wispy-dust--staging-2.vectorpages.com
                          custom_domain:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          dns_target:
                            type: string
                            examples:
                              - wispy-dust--staging-2.vectorpages.com
                          dns_status:
                            type: object
                            properties:
                              state:
                                type: string
                                examples:
                                  - not_required
                              records:
                                type: array
                                examples:
                                  - []
                              last_checked_at:
                                type:
                                  - string
                                  - 'null'
                                examples:
                                  - null
                          custom_domain_certificate:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          subdomain:
                            type: string
                            examples:
                              - wispy-dust
                          database_host:
                            type: string
                            examples:
                              - cluster.abc123.us-east-1.rds.amazonaws.com
                          database_name:
                            type: string
                            examples:
                              - db_01jfgxk4nqrst5vwx9yz0abcde
                          created_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          updated_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                      message:
                        type: string
                        examples:
                          - 'Environment creation initiated'
                      http_status:
                        type: integer
                        examples:
                          - 201
                    examples:
                      -
                        data:
                          id: 01jfgxk4nqrst5vwx9yz0abcdg
                          vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                          your_customer_id: cust_12345
                          name: staging-2
                          is_production: false
                          status: pending
                          status_label: Pending
                          provisioning_step: pending
                          provisioning_step_label: Queued
                          failure_reason: null
                          php_version: '8.3'
                          tags: []
                          platform_domain: wispy-dust--staging-2.vectorpages.com
                          custom_domain: null
                          dns_target: wispy-dust--staging-2.vectorpages.com
                          dns_status:
                            state: not_required
                            records: []
                            last_checked_at: null
                          custom_domain_certificate: null
                          subdomain: wispy-dust
                          database_host: cluster.abc123.us-east-1.rds.amazonaws.com
                          database_name: db_01jfgxk4nqrst5vwx9yz0abcde
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                        message: 'Environment creation initiated'
                        http_status: 201
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Site Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Site not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Site not found'
                    http_status: 404
        422:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Validation Error'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      errors:
                        type: object
                        properties:
                          name:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - 'Environment name must be lowercase letters, numbers, and hyphens only.'
                      message:
                        type: string
                        examples:
                          - 'Validation failed'
                      http_status:
                        type: integer
                        examples:
                          - 422
                    examples:
                      -
                        data: {  }
                        errors:
                          name:
                            - 'Environment name must be lowercase letters, numbers, and hyphens only.'
                        message: 'Validation failed'
                        http_status: 422
                  -
                    description: 'Consecutive Hyphens'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      errors:
                        type: object
                        properties:
                          name:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - 'Environment name must not contain consecutive hyphens (--).'
                      message:
                        type: string
                        examples:
                          - 'Validation failed'
                      http_status:
                        type: integer
                        examples:
                          - 422
                    examples:
                      -
                        data: {  }
                        errors:
                          name:
                            - 'Environment name must not contain consecutive hyphens (--).'
                        message: 'Validation failed'
                        http_status: 422
      tags:
        - Environments
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'A unique name for this environment (slug format: lowercase letters, numbers, hyphens; consecutive hyphens `--` are not allowed). Max 50 chars.'
                  examples:
                    - production
                custom_domain:
                  type:
                    - string
                    - 'null'
                  description: 'Optional custom domain for this environment. When supplied, triggers asynchronous ACM certificate provisioning and Bunny hostname attachment (production only). Must be a valid fully qualified domain name. Max 253 chars.'
                  examples:
                    - example.com
                is_production:
                  type: boolean
                  description: 'Whether this is the production environment. Only one per site. Default: false.'
                  examples:
                    - true
                php_version:
                  type: string
                  description: 'The PHP version for this environment. Options: 7.2, 7.3, 7.4, 8.0, 8.1, 8.2, 8.3, 8.4, 8.5.'
                  examples:
                    - '8.3'
                tags:
                  type: array
                  description: 'Optional array of tags for categorizing the environment. Each tag must be slug format (lowercase letters, numbers, hyphens), max 100 characters, and unique.'
                  items:
                    type: string
                  examples:
                    -
                      - live
                      - primary
              required:
                - name
                - php_version
    parameters:
      -
        in: path
        name: site
        description: 'The site ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/environments/{env}/rollback':
    post:
      summary: 'Rollback Deployment'
      operationId: environmentsDeploymentsRollbackDeployment
      description: "Triggers a rollback for the environment. By default, rolls back to the last\nsuccessful deployment. Optionally, you can specify a target_deployment_id to\nrollback to a specific previous deployment.\n\nThe rollback creates a new deployment record with `pending` status that progresses\nthrough `running` to either `completed` or `failed`."
      parameters: []
      responses:
        201:
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdi
                      vector_environment_id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdg
                      status:
                        type: string
                        examples:
                          - pending
                      status_label:
                        type: string
                        examples:
                          - Pending
                      stdout:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      stderr:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      actor:
                        type: string
                        examples:
                          - user@example.com
                      environment:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdg
                          name:
                            type: string
                            examples:
                              - production
                          is_production:
                            type: boolean
                            examples:
                              - true
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Rollback initiated'
                  http_status:
                    type: integer
                    examples:
                      - 201
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdi
                      vector_environment_id: 01jfgxk4nqrst5vwx9yz0abcdg
                      status: pending
                      status_label: Pending
                      stdout: null
                      stderr: null
                      actor: user@example.com
                      environment:
                        id: 01jfgxk4nqrst5vwx9yz0abcdg
                        name: production
                        is_production: true
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Rollback initiated'
                    http_status: 201
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Environment Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Environment not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Environment not found'
                    http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      target_deployment_id:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The specified deployment does not exist for this environment or has no Ymir deployment ID.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      target_deployment_id:
                        - 'The specified deployment does not exist for this environment or has no Ymir deployment ID.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Environments
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                target_deployment_id:
                  type:
                    - string
                    - 'null'
                  description: 'Optional deployment ID to rollback to. Must be a previous successful deployment.'
                  examples:
                    - 01jfgxk4nqrst5vwx9yz0abcdh
    parameters:
      -
        in: path
        name: env
        description: 'The environment ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdg
  '/api/v1/vector/environments/{env}/ssl/nudge':
    post:
      summary: Nudge
      operationId: environmentsSSLNudge
      description: "Manually nudge SSL provisioning for an environment. Use this when SSL\nprovisioning appears to be stuck or to retry after a failure."
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Provisioning Progressed'
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdg
                          vector_site_id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcde
                          your_customer_id:
                            type: string
                            examples:
                              - cust_12345
                          name:
                            type: string
                            examples:
                              - production
                          is_production:
                            type: boolean
                            examples:
                              - true
                          status:
                            type: string
                            examples:
                              - provisioning
                          status_label:
                            type: string
                            examples:
                              - Provisioning
                          provisioning_step:
                            type: string
                            examples:
                              - deploying
                          provisioning_step_label:
                            type: string
                            examples:
                              - Deploying
                          failure_reason:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          php_version:
                            type: string
                            examples:
                              - '8.3'
                          tags:
                            type: array
                            examples:
                              - []
                          platform_domain:
                            type: string
                            examples:
                              - wispy-dust.vectorpages.com
                          custom_domain:
                            type: string
                            examples:
                              - example.com
                          subdomain:
                            type: string
                            examples:
                              - wispy-dust
                          created_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          updated_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                      message:
                        type: string
                        examples:
                          - 'SSL provisioning advanced from waiting_cert to deploying'
                      http_status:
                        type: integer
                        examples:
                          - 200
                    examples:
                      -
                        data:
                          id: 01jfgxk4nqrst5vwx9yz0abcdg
                          vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                          your_customer_id: cust_12345
                          name: production
                          is_production: true
                          status: provisioning
                          status_label: Provisioning
                          provisioning_step: deploying
                          provisioning_step_label: Deploying
                          failure_reason: null
                          php_version: '8.3'
                          tags: []
                          platform_domain: wispy-dust.vectorpages.com
                          custom_domain: example.com
                          subdomain: wispy-dust
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                        message: 'SSL provisioning advanced from waiting_cert to deploying'
                        http_status: 200
                  -
                    description: Waiting
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdg
                          vector_site_id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcde
                          your_customer_id:
                            type: string
                            examples:
                              - cust_12345
                          name:
                            type: string
                            examples:
                              - production
                          is_production:
                            type: boolean
                            examples:
                              - true
                          status:
                            type: string
                            examples:
                              - provisioning
                          status_label:
                            type: string
                            examples:
                              - Provisioning
                          provisioning_step:
                            type: string
                            examples:
                              - waiting_custom_dns
                          provisioning_step_label:
                            type: string
                            examples:
                              - 'Waiting for custom domain DNS'
                          failure_reason:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          php_version:
                            type: string
                            examples:
                              - '8.3'
                          tags:
                            type: array
                            examples:
                              - []
                          platform_domain:
                            type: string
                            examples:
                              - wispy-dust.vectorpages.com
                          custom_domain:
                            type: string
                            examples:
                              - example.com
                          subdomain:
                            type: string
                            examples:
                              - wispy-dust
                          created_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          updated_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                      message:
                        type: string
                        examples:
                          - 'SSL provisioning is waiting and cannot advance yet. Current step: waiting_custom_dns'
                      http_status:
                        type: integer
                        examples:
                          - 200
                    examples:
                      -
                        data:
                          id: 01jfgxk4nqrst5vwx9yz0abcdg
                          vector_site_id: 01jfgxk4nqrst5vwx9yz0abcde
                          your_customer_id: cust_12345
                          name: production
                          is_production: true
                          status: provisioning
                          status_label: Provisioning
                          provisioning_step: waiting_custom_dns
                          provisioning_step_label: 'Waiting for custom domain DNS'
                          failure_reason: null
                          php_version: '8.3'
                          tags: []
                          platform_domain: wispy-dust.vectorpages.com
                          custom_domain: example.com
                          subdomain: wispy-dust
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                        message: 'SSL provisioning is waiting and cannot advance yet. Current step: waiting_custom_dns'
                        http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Environment not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Environment not found'
                    http_status: 404
      tags:
        - Environments
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                retry:
                  type: boolean
                  description: 'Whether to retry from a failed state. Default: false.'
                  examples:
                    - true
    parameters:
      -
        in: path
        name: env
        description: 'The environment ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdg
  '/api/v1/vector/environments/{env}/dns/recheck':
    post:
      summary: 'Recheck DNS'
      operationId: environmentsDNSRecheckDNS
      description: "Re-verifies the custom domain DNS configuration on demand. Resolves the\ncustomer's CNAME, compares against the expected target (Bunny CDN\nhostname for production with CDN, otherwise the Ymir vanity domain),\nand marks the environment as DNS-verified when matched."
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'DNS Verified'
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdg
                      message:
                        type: string
                        examples:
                          - 'DNS verified'
                      http_status:
                        type: integer
                        examples:
                          - 200
                    examples:
                      -
                        data:
                          id: 01jfgxk4nqrst5vwx9yz0abcdg
                        message: 'DNS verified'
                        http_status: 200
                  -
                    description: 'Still Pending'
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdg
                      message:
                        type: string
                        examples:
                          - 'DNS not yet propagating to expected target'
                      http_status:
                        type: integer
                        examples:
                          - 200
                    examples:
                      -
                        data:
                          id: 01jfgxk4nqrst5vwx9yz0abcdg
                        message: 'DNS not yet propagating to expected target'
                        http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Environment not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Environment not found'
                    http_status: 404
        422:
          description: 'No Custom Domain'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      environment:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'Environment has no custom domain to verify.'
                  message:
                    type: string
                    examples:
                      - 'Environment has no custom domain to verify.'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      environment:
                        - 'Environment has no custom domain to verify.'
                    message: 'Environment has no custom domain to verify.'
                    http_status: 422
      tags:
        - Environments
    parameters:
      -
        in: path
        name: env
        description: 'The environment ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdg
  /api/v1/vector/account:
    get:
      summary: 'Get Account Summary'
      operationId: getAccountSummary
      description: "Retrieves a summary of the authenticated account's Vector Pro information\nincluding owner details, cluster DNS endpoints, verified domains,\nsite/environment counts grouped by status, deployment metrics, backup counts,\nand recent activity.\n\nSite counts exclude sites in a terminal state (`terminated`, `termination_requested`,\n`canceled`). Environment counts exclude environments in a terminal state (`terminated`,\n`terminating`). Those statuses are therefore omitted from the `by_status` breakdowns\nand are not included in any of the total/convenience counts.\n\nResponses are cached for 5 minutes per account."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      owner:
                        type: object
                        properties:
                          name:
                            type: string
                            examples:
                              - 'John Doe'
                          email:
                            type: string
                            examples:
                              - user@example.com
                      account:
                        type: object
                        properties:
                          name:
                            type: string
                            examples:
                              - 'My Account'
                          company:
                            type: string
                            examples:
                              - 'Acme Corp'
                      partner:
                        type: object
                        properties:
                          external_customer_url:
                            type: string
                            examples:
                              - 'https://myapp.com/customers/YOUR_ID'
                      cluster:
                        type: object
                        properties:
                          alb_dns_name:
                            type: string
                            examples:
                              - alb-abc123.us-west-2.elb.amazonaws.com
                          aurora_cluster_endpoint:
                            type: string
                            examples:
                              - cluster.abc123.us-east-1.rds.amazonaws.com
                          ssh_nlb_dns:
                            type: string
                            examples:
                              - nlb-abc123.us-west-2.elb.amazonaws.com
                      domains:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - example.com
                            - example.org
                      sites:
                        type: object
                        properties:
                          total:
                            type: integer
                            examples:
                              - 4
                          by_status:
                            type: object
                            properties:
                              pending:
                                type: integer
                                examples:
                                  - 0
                              activation_requested:
                                type: integer
                                examples:
                                  - 0
                              active:
                                type: integer
                                examples:
                                  - 3
                              suspension_requested:
                                type: integer
                                examples:
                                  - 0
                              suspended:
                                type: integer
                                examples:
                                  - 1
                              unsuspension_requested:
                                type: integer
                                examples:
                                  - 0
                      environments:
                        type: object
                        properties:
                          total:
                            type: integer
                            examples:
                              - 7
                          by_status:
                            type: object
                            properties:
                              pending:
                                type: integer
                                examples:
                                  - 1
                              provisioning:
                                type: integer
                                examples:
                                  - 0
                              active:
                                type: integer
                                examples:
                                  - 5
                              suspending:
                                type: integer
                                examples:
                                  - 0
                              suspended:
                                type: integer
                                examples:
                                  - 1
                              unsuspending:
                                type: integer
                                examples:
                                  - 0
                              failed:
                                type: integer
                                examples:
                                  - 0
                      total_sites:
                        type: integer
                        examples:
                          - 4
                      pending_sites:
                        type: integer
                        examples:
                          - 0
                      total_environments:
                        type: integer
                        examples:
                          - 7
                      production_environments:
                        type: integer
                        examples:
                          - 3
                      deployments_7d:
                        type: integer
                        examples:
                          - 12
                      failed_deployments_7d:
                        type: integer
                        examples:
                          - 1
                      active_backups:
                        type: integer
                        examples:
                          - 4
                      recent_activity:
                        type: array
                        examples:
                          - []
                      recent_deployments:
                        type: array
                        examples:
                          - []
                  message:
                    type: string
                    examples:
                      - 'Account summary retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      owner:
                        name: 'John Doe'
                        email: user@example.com
                      account:
                        name: 'My Account'
                        company: 'Acme Corp'
                      partner:
                        external_customer_url: 'https://myapp.com/customers/YOUR_ID'
                      cluster:
                        alb_dns_name: alb-abc123.us-west-2.elb.amazonaws.com
                        aurora_cluster_endpoint: cluster.abc123.us-east-1.rds.amazonaws.com
                        ssh_nlb_dns: nlb-abc123.us-west-2.elb.amazonaws.com
                      domains:
                        - example.com
                        - example.org
                      sites:
                        total: 4
                        by_status:
                          pending: 0
                          activation_requested: 0
                          active: 3
                          suspension_requested: 0
                          suspended: 1
                          unsuspension_requested: 0
                      environments:
                        total: 7
                        by_status:
                          pending: 1
                          provisioning: 0
                          active: 5
                          suspending: 0
                          suspended: 1
                          unsuspending: 0
                          failed: 0
                      total_sites: 4
                      pending_sites: 0
                      total_environments: 7
                      production_environments: 3
                      deployments_7d: 12
                      failed_deployments_7d: 1
                      active_backups: 4
                      recent_activity: []
                      recent_deployments: []
                    message: 'Account summary retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
      tags:
        - Account
    patch:
      summary: 'Update Account Settings'
      operationId: updateAccountSettings
      description: "Update partner-level configuration on the authenticated account. The most\nimportant setting today is `external_customer_url`, a URL template containing\nthe literal token `YOUR_ID`. When a site's `your_customer_id` is rendered in\nthe Vector Pro control panel, that token is substituted with the value and\nthe customer ID is shown as a link to the partner's own system.\n\nOn success this endpoint returns the same shape as `GET /vector/account` so\nclients can refresh their cached account state in a single round trip."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      owner:
                        type: object
                        properties:
                          name:
                            type: string
                            examples:
                              - 'John Doe'
                          email:
                            type: string
                            examples:
                              - user@example.com
                      account:
                        type: object
                        properties:
                          name:
                            type: string
                            examples:
                              - 'My Account'
                          company:
                            type: string
                            examples:
                              - 'Acme Corp'
                      partner:
                        type: object
                        properties:
                          external_customer_url:
                            type: string
                            examples:
                              - 'https://myapp.com/customers/YOUR_ID'
                      cluster:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      domains:
                        type: array
                        examples:
                          - []
                      sites:
                        type: object
                        properties:
                          total:
                            type: integer
                            examples:
                              - 0
                          by_status:
                            type: object
                            properties: {  }
                      environments:
                        type: object
                        properties:
                          total:
                            type: integer
                            examples:
                              - 0
                          by_status:
                            type: object
                            properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Account updated successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      owner:
                        name: 'John Doe'
                        email: user@example.com
                      account:
                        name: 'My Account'
                        company: 'Acme Corp'
                      partner:
                        external_customer_url: 'https://myapp.com/customers/YOUR_ID'
                      cluster: null
                      domains: []
                      sites:
                        total: 0
                        by_status: {  }
                      environments:
                        total: 0
                        by_status: {  }
                    message: 'Account updated successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      external_customer_url:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - "The external customer URL must contain the literal token YOUR_ID, which is replaced with each site's your_customer_id when the link is rendered."
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      external_customer_url:
                        - "The external customer URL must contain the literal token YOUR_ID, which is replaced with each site's your_customer_id when the link is rendered."
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Account
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                external_customer_url:
                  type:
                    - string
                    - 'null'
                  description: 'nullable A URL template that must contain the literal token `YOUR_ID`. Pass `null` to clear it.'
                  examples:
                    - 'https://myapp.com/customers/YOUR_ID'
  /api/v1/vector/ssh-keys:
    get:
      summary: 'List SSH Keys'
      operationId: accountSSHKeysListSSHKeys
      description: "Retrieves a paginated list of account-level default SSH keys. These are\ntemplate keys that will be installed on new dev sites."
      parameters:
        -
          in: query
          name: per_page
          description: 'Number of items per page (max 100). Default: 15.'
          required: false
          schema:
            type: integer
            description: 'Number of items per page (max 100). Default: 15.'
            examples:
              - 25
        -
          in: query
          name: page
          description: 'Page number for pagination. Default: 1.'
          required: false
          schema:
            type: integer
            description: 'Page number for pagination. Default: 1.'
            examples:
              - 1
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          examples:
                            - 01jfgxk4nqrst5vwx9yz0abcdi
                        account_id:
                          type: integer
                          examples:
                            - 1
                        vector_site_id:
                          type:
                            - string
                            - 'null'
                          examples:
                            - null
                        name:
                          type: string
                          examples:
                            - 'deploy key'
                        fingerprint:
                          type: string
                          examples:
                            - 'SHA256:abc123def456...'
                        public_key_preview:
                          type: string
                          examples:
                            - 'ssh-rsa AAAAB3NzaC1yc2EA...user@host'
                        is_account_default:
                          type: boolean
                          examples:
                            - true
                        created_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                        updated_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                    examples:
                      -
                        -
                          id: 01jfgxk4nqrst5vwx9yz0abcdi
                          account_id: 1
                          vector_site_id: null
                          name: 'deploy key'
                          fingerprint: 'SHA256:abc123def456...'
                          public_key_preview: 'ssh-rsa AAAAB3NzaC1yc2EA...user@host'
                          is_account_default: true
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                  links:
                    type: object
                    properties: {  }
                  meta:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'SSH keys retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      -
                        id: 01jfgxk4nqrst5vwx9yz0abcdi
                        account_id: 1
                        vector_site_id: null
                        name: 'deploy key'
                        fingerprint: 'SHA256:abc123def456...'
                        public_key_preview: 'ssh-rsa AAAAB3NzaC1yc2EA...user@host'
                        is_account_default: true
                        created_at: '2025-01-15T12:00:00+00:00'
                        updated_at: '2025-01-15T12:00:00+00:00'
                    links: {  }
                    meta: {  }
                    message: 'SSH keys retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
      tags:
        - Account
    post:
      summary: 'Create SSH Key'
      operationId: accountSSHKeysCreateSSHKey
      description: "Creates a new account-level default SSH key. This key will be automatically\ninstalled on any new dev sites created after this point.\n\n**Note**: This does not affect existing sites. To add a key to an existing\nsite, use the site-specific SSH key endpoint."
      parameters: []
      responses:
        201:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdi
                      account_id:
                        type: integer
                        examples:
                          - 1
                      vector_site_id:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      name:
                        type: string
                        examples:
                          - 'deploy key'
                      fingerprint:
                        type: string
                        examples:
                          - 'SHA256:abc123def456...'
                      public_key_preview:
                        type: string
                        examples:
                          - 'ssh-rsa AAAAB3NzaC1yc2EA...user@host'
                      is_account_default:
                        type: boolean
                        examples:
                          - true
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'SSH key created successfully'
                  http_status:
                    type: integer
                    examples:
                      - 201
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdi
                      account_id: 1
                      vector_site_id: null
                      name: 'deploy key'
                      fingerprint: 'SHA256:abc123def456...'
                      public_key_preview: 'ssh-rsa AAAAB3NzaC1yc2EA...user@host'
                      is_account_default: true
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'SSH key created successfully'
                    http_status: 201
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        422:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Invalid Key'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      errors:
                        type: object
                        properties:
                          public_key:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - 'Unable to parse SSH public key. Ensure it is in valid OpenSSH format.'
                      message:
                        type: string
                        examples:
                          - 'Validation failed'
                      http_status:
                        type: integer
                        examples:
                          - 422
                    examples:
                      -
                        data: {  }
                        errors:
                          public_key:
                            - 'Unable to parse SSH public key. Ensure it is in valid OpenSSH format.'
                        message: 'Validation failed'
                        http_status: 422
                  -
                    description: 'Duplicate Key'
                    type: object
                    properties:
                      data:
                        type: object
                        properties: {  }
                      errors:
                        type: object
                        properties:
                          public_key:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - 'An SSH key with this fingerprint already exists for this account.'
                      message:
                        type: string
                        examples:
                          - 'Validation failed'
                      http_status:
                        type: integer
                        examples:
                          - 422
                    examples:
                      -
                        data: {  }
                        errors:
                          public_key:
                            - 'An SSH key with this fingerprint already exists for this account.'
                        message: 'Validation failed'
                        http_status: 422
      tags:
        - Account
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'A friendly name for the SSH key.'
                  examples:
                    - 'deploy key'
                public_key:
                  type: string
                  description: 'The SSH public key in OpenSSH format.'
                  examples:
                    - 'ssh-rsa AAAAB3NzaC1yc2EA... user@host'
              required:
                - name
                - public_key
  '/api/v1/vector/ssh-keys/{key}':
    get:
      summary: 'Get SSH Key'
      operationId: accountSSHKeysGetSSHKey
      description: 'Retrieves details of a specific account-level SSH key.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdi
                      account_id:
                        type: integer
                        examples:
                          - 1
                      vector_site_id:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      name:
                        type: string
                        examples:
                          - 'deploy key'
                      fingerprint:
                        type: string
                        examples:
                          - 'SHA256:abc123def456...'
                      public_key_preview:
                        type: string
                        examples:
                          - 'ssh-rsa AAAAB3NzaC1yc2EA...user@host'
                      is_account_default:
                        type: boolean
                        examples:
                          - true
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'SSH key retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdi
                      account_id: 1
                      vector_site_id: null
                      name: 'deploy key'
                      fingerprint: 'SHA256:abc123def456...'
                      public_key_preview: 'ssh-rsa AAAAB3NzaC1yc2EA...user@host'
                      is_account_default: true
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'SSH key retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'SSH key not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'SSH key not found'
                    http_status: 404
      tags:
        - Account
    delete:
      summary: 'Delete SSH Key'
      operationId: accountSSHKeysDeleteSSHKey
      description: "Deletes an account-level default SSH key. This does not remove the key\nfrom any existing sites where it has already been installed."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdi
                      account_id:
                        type: integer
                        examples:
                          - 1
                      vector_site_id:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      name:
                        type: string
                        examples:
                          - 'deploy key'
                      fingerprint:
                        type: string
                        examples:
                          - 'SHA256:abc123def456...'
                      public_key_preview:
                        type: string
                        examples:
                          - 'ssh-rsa AAAAB3NzaC1yc2EA...user@host'
                      is_account_default:
                        type: boolean
                        examples:
                          - true
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'SSH key deleted successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdi
                      account_id: 1
                      vector_site_id: null
                      name: 'deploy key'
                      fingerprint: 'SHA256:abc123def456...'
                      public_key_preview: 'ssh-rsa AAAAB3NzaC1yc2EA...user@host'
                      is_account_default: true
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'SSH key deleted successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'SSH key not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'SSH key not found'
                    http_status: 404
      tags:
        - Account
    parameters:
      -
        in: path
        name: key
        description: 'The SSH key ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdi
  /api/v1/vector/api-keys:
    get:
      summary: 'List API Keys'
      operationId: accountAPIKeysListAPIKeys
      description: "Retrieves a paginated list of API keys for the authenticated user.\nToken values are never returned - only metadata like name, creation date,\nand last used timestamp."
      parameters:
        -
          in: query
          name: per_page
          description: 'Number of items per page (max 100). Default: 15.'
          required: false
          schema:
            type: integer
            description: 'Number of items per page (max 100). Default: 15.'
            examples:
              - 25
        -
          in: query
          name: page
          description: 'Page number for pagination. Default: 1.'
          required: false
          schema:
            type: integer
            description: 'Page number for pagination. Default: 1.'
            examples:
              - 1
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          examples:
                            - 'Production API Key'
                        abilities:
                          type: array
                          items:
                            type: string
                          examples:
                            -
                              - '*'
                        last_used_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                        expires_at:
                          type:
                            - string
                            - 'null'
                          examples:
                            - null
                        created_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                    examples:
                      -
                        -
                          name: 'Production API Key'
                          abilities:
                            - '*'
                          last_used_at: '2025-01-15T12:00:00+00:00'
                          expires_at: null
                          created_at: '2025-01-15T12:00:00+00:00'
                  links:
                    type: object
                    properties: {  }
                  meta:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'API keys retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      -
                        name: 'Production API Key'
                        abilities:
                          - '*'
                        last_used_at: '2025-01-15T12:00:00+00:00'
                        expires_at: null
                        created_at: '2025-01-15T12:00:00+00:00'
                    links: {  }
                    meta: {  }
                    message: 'API keys retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
      tags:
        - Account
    post:
      summary: 'Create API Key'
      operationId: accountAPIKeysCreateAPIKey
      description: "Creates a new API key for the authenticated user.\n\n> [!WARNING]\n> The API key is returned ONLY in this response. Store it securely—it cannot be retrieved again.\n\nUse this token in the `Authorization` header for all API requests.\n\n##### Abilities\n\nAbilities control what operations the token can perform. Available abilities:\n\n- `*` - Full access (default)\n- `mcp` - Full MCP access (for AI assistants like Claude)\n- `account:read` - Read account information\n- `site:read` - Read sites, environments, deployments, database operations\n- `site:write` - Manage sites, environments, deployments, database import/export\n- `domain:read` - Read domains\n- `domain:write` - Manage domains\n- `log:read` - Read site logs\n- `cdn:read` - Read CDN settings\n- `cdn:write` - Manage CDN settings and cache\n- `webhook:read` - Read webhooks\n- `webhook:write` - Manage webhooks\n- `secret:read` - Read API keys and global secrets\n- `secret:write` - Manage API keys and global secrets\n- `sshkey:read` - Read SSH keys\n- `sshkey:write` - Manage SSH keys\n- `events:read` - Read event logs"
      parameters: []
      responses:
        201:
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      name:
                        type: string
                        examples:
                          - 'Production API Key'
                      token:
                        type: string
                        examples:
                          - 1|a1b2c3d4e5f6789012345678901234567890123456789012345678901234abcd
                      abilities:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - '*'
                      expires_at:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'API key created successfully. Store this token securely - it will not be shown again.'
                  http_status:
                    type: integer
                    examples:
                      - 201
                examples:
                  -
                    data:
                      name: 'Production API Key'
                      token: 1|a1b2c3d4e5f6789012345678901234567890123456789012345678901234abcd
                      abilities:
                        - '*'
                      expires_at: null
                      created_at: '2025-01-15T12:00:00+00:00'
                    message: 'API key created successfully. Store this token securely - it will not be shown again.'
                    http_status: 201
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      name:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The name field is required.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      name:
                        - 'The name field is required.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Account
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'A descriptive name for this API key.'
                  examples:
                    - 'Production API Key'
                abilities:
                  type: array
                  description: 'Optional array of abilities. Defaults to ["*"] for full access.'
                  items:
                    type: string
                  examples:
                    -
                      - 'site:read'
                      - 'site:write'
                expires_at:
                  type:
                    - datetime
                    - 'null'
                  description: 'Optional expiration date for the token. Must be in the future.'
                  examples:
                    - '2025-12-31T23:59:59+00:00'
              required:
                - name
  /api/v1/vector/global-secrets:
    get:
      summary: 'List Secrets'
      operationId: accountSecretsListSecrets
      description: "Retrieves a paginated list of all global secrets and environment variables for your account.\nValues are only included for environment variables (`is_secret=false`)."
      parameters:
        -
          in: query
          name: per_page
          description: 'Number of items per page (max 100). Default: 15.'
          required: false
          schema:
            type: integer
            description: 'Number of items per page (max 100). Default: 15.'
            examples:
              - 10
        -
          in: query
          name: page
          description: 'Page number for pagination.'
          required: false
          schema:
            type: integer
            description: 'Page number for pagination.'
            examples:
              - 1
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          examples:
                            - 01jfgxk4nqrst5vwx9yz0abcde
                        key:
                          type: string
                          examples:
                            - STRIPE_SECRET_KEY
                        is_secret:
                          type: boolean
                          examples:
                            - true
                        created_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                        updated_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                    examples:
                      -
                        -
                          id: 01jfgxk4nqrst5vwx9yz0abcde
                          key: STRIPE_SECRET_KEY
                          is_secret: true
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                        -
                          id: 01jfgxk4nqrst5vwx9yz0abcdf
                          key: APP_ENV
                          is_secret: false
                          value: production
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                  links:
                    type: object
                    properties: {  }
                  meta:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Global secrets retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      -
                        id: 01jfgxk4nqrst5vwx9yz0abcde
                        key: STRIPE_SECRET_KEY
                        is_secret: true
                        created_at: '2025-01-15T12:00:00+00:00'
                        updated_at: '2025-01-15T12:00:00+00:00'
                      -
                        id: 01jfgxk4nqrst5vwx9yz0abcdf
                        key: APP_ENV
                        is_secret: false
                        value: production
                        created_at: '2025-01-15T12:00:00+00:00'
                        updated_at: '2025-01-15T12:00:00+00:00'
                    links: {  }
                    meta: {  }
                    message: 'Global secrets retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
      tags:
        - Account
    post:
      summary: 'Create Secret'
      operationId: accountSecretsCreateSecret
      description: "Creates a new global secret or environment variable for your account. It will be available\nto all sites within your account during deployment.\n\nSet `is_secret` to `false` to create a plain environment variable instead of a secret.\nEnvironment variables are stored as Lambda env vars (cheaper) and their values are\nreturned in API responses. Secrets are stored in AWS Secrets Manager and their values\nare never returned.\n\nThe following keys are reserved and cannot be used:\n<kbd>AUTH_KEY</kbd>, <kbd>SECURE_AUTH_KEY</kbd>, <kbd>LOGGED_IN_KEY</kbd>, <kbd>NONCE_KEY</kbd>, <kbd>AUTH_SALT</kbd>, <kbd>SECURE_AUTH_SALT</kbd>, <kbd>LOGGED_IN_SALT</kbd>, <kbd>NONCE_SALT</kbd>, <kbd>AUTOMATIC_UPDATER_DISABLED</kbd>, <kbd>DISABLE_WP_CRON</kbd>, <kbd>DISALLOW_FILE_EDIT</kbd>, <kbd>DISALLOW_FILE_MODS</kbd>, <kbd>DOMAIN_CURRENT_SITE</kbd>, <kbd>WP_HOME</kbd>, <kbd>WP_SITEURL</kbd>, <kbd>YMIR_ASSETS_PATH</kbd>, <kbd>YMIR_ASSETS_URL</kbd>, <kbd>YMIR_CACHE_PREFIX</kbd>, <kbd>YMIR_CACHE_TABLE</kbd>, <kbd>YMIR_CDN_IMAGE_PROCESSING_ENABLED</kbd>, <kbd>YMIR_DISTRIBUTION_ID</kbd>, <kbd>YMIR_DOMAIN_NAMES</kbd>, <kbd>YMIR_ENVIRONMENT</kbd>, <kbd>YMIR_MAX_EXECUTION_TIME</kbd>, <kbd>YMIR_PRIMARY_DOMAIN_NAME</kbd>, <kbd>YMIR_PROJECT_TYPE</kbd>, <kbd>YMIR_PUBLIC_STORE</kbd>, <kbd>YMIR_REDIS_ENDPOINT</kbd>, <kbd>YMIR_SECRETS_PATH</kbd>, <kbd>YMIR_UPLOAD_URL</kbd>, <kbd>_HANDLER</kbd>, <kbd>AWS_ACCESS_KEY_ID</kbd>, <kbd>AWS_EXECUTION_ENV</kbd>, <kbd>AWS_LAMBDA_FUNCTION_MEMORY_SIZE</kbd>, <kbd>AWS_LAMBDA_FUNCTION_NAME</kbd>, <kbd>AWS_LAMBDA_FUNCTION_VERSION</kbd>, <kbd>AWS_LAMBDA_LOG_GROUP_NAME</kbd>, <kbd>AWS_LAMBDA_LOG_STREAM_NAME</kbd>, <kbd>AWS_LAMBDA_RUNTIME_API</kbd>, <kbd>AWS_REGION</kbd>, <kbd>AWS_SECRET_ACCESS_KEY</kbd>, <kbd>AWS_SESSION_TOKEN</kbd>, <kbd>LAMBDA_RUNTIME_DIR</kbd>, <kbd>LAMBDA_TASK_ROOT</kbd>, <kbd>TZ</kbd>"
      parameters: []
      responses:
        201:
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      key:
                        type: string
                        examples:
                          - STRIPE_SECRET_KEY
                      is_secret:
                        type: boolean
                        examples:
                          - true
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Global secret created successfully'
                  http_status:
                    type: integer
                    examples:
                      - 201
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcde
                      key: STRIPE_SECRET_KEY
                      is_secret: true
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Global secret created successfully'
                    http_status: 201
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      key:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The secret key is required.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      key:
                        - 'The secret key is required.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Account
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                key:
                  type: string
                  description: 'The secret key name. Must start with a letter and contain only uppercase letters, numbers, and underscores.'
                  examples:
                    - STRIPE_SECRET_KEY
                value:
                  type: string
                  description: 'The secret value.'
                  examples:
                    - sk_live_xxxx
                is_secret:
                  type: boolean
                  description: 'Whether this is a secret (stored in AWS Secrets Manager) or a plain environment variable. Default: true.'
                  examples:
                    - true
              required:
                - key
                - value
  '/api/v1/vector/global-secrets/{secret}':
    get:
      summary: 'Get Secret'
      operationId: accountSecretsGetSecret
      description: "Retrieves details of a specific global secret or environment variable.\nThe value is only included for environment variables (`is_secret=false`)."
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: Secret
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcde
                          key:
                            type: string
                            examples:
                              - STRIPE_SECRET_KEY
                          is_secret:
                            type: boolean
                            examples:
                              - true
                          created_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          updated_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                      message:
                        type: string
                        examples:
                          - 'Global secret retrieved successfully'
                      http_status:
                        type: integer
                        examples:
                          - 200
                    examples:
                      -
                        data:
                          id: 01jfgxk4nqrst5vwx9yz0abcde
                          key: STRIPE_SECRET_KEY
                          is_secret: true
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                        message: 'Global secret retrieved successfully'
                        http_status: 200
                  -
                    description: 'Environment Variable'
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdf
                          key:
                            type: string
                            examples:
                              - APP_ENV
                          is_secret:
                            type: boolean
                            examples:
                              - false
                          value:
                            type: string
                            examples:
                              - production
                          created_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          updated_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                      message:
                        type: string
                        examples:
                          - 'Global secret retrieved successfully'
                      http_status:
                        type: integer
                        examples:
                          - 200
                    examples:
                      -
                        data:
                          id: 01jfgxk4nqrst5vwx9yz0abcdf
                          key: APP_ENV
                          is_secret: false
                          value: production
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                        message: 'Global secret retrieved successfully'
                        http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Global secret not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Global secret not found'
                    http_status: 404
      tags:
        - Account
    put:
      summary: 'Update Secret'
      operationId: accountSecretsUpdateSecret
      description: "Updates an existing global secret or environment variable. You can update the key, value,\nis_secret flag, or any combination.\n\nThe following keys are reserved and cannot be used:\n<kbd>AUTH_KEY</kbd>, <kbd>SECURE_AUTH_KEY</kbd>, <kbd>LOGGED_IN_KEY</kbd>, <kbd>NONCE_KEY</kbd>, <kbd>AUTH_SALT</kbd>, <kbd>SECURE_AUTH_SALT</kbd>, <kbd>LOGGED_IN_SALT</kbd>, <kbd>NONCE_SALT</kbd>, <kbd>AUTOMATIC_UPDATER_DISABLED</kbd>, <kbd>DISABLE_WP_CRON</kbd>, <kbd>DISALLOW_FILE_EDIT</kbd>, <kbd>DISALLOW_FILE_MODS</kbd>, <kbd>DOMAIN_CURRENT_SITE</kbd>, <kbd>WP_HOME</kbd>, <kbd>WP_SITEURL</kbd>, <kbd>YMIR_ASSETS_PATH</kbd>, <kbd>YMIR_ASSETS_URL</kbd>, <kbd>YMIR_CACHE_PREFIX</kbd>, <kbd>YMIR_CACHE_TABLE</kbd>, <kbd>YMIR_CDN_IMAGE_PROCESSING_ENABLED</kbd>, <kbd>YMIR_DISTRIBUTION_ID</kbd>, <kbd>YMIR_DOMAIN_NAMES</kbd>, <kbd>YMIR_ENVIRONMENT</kbd>, <kbd>YMIR_MAX_EXECUTION_TIME</kbd>, <kbd>YMIR_PRIMARY_DOMAIN_NAME</kbd>, <kbd>YMIR_PROJECT_TYPE</kbd>, <kbd>YMIR_PUBLIC_STORE</kbd>, <kbd>YMIR_REDIS_ENDPOINT</kbd>, <kbd>YMIR_SECRETS_PATH</kbd>, <kbd>YMIR_UPLOAD_URL</kbd>, <kbd>_HANDLER</kbd>, <kbd>AWS_ACCESS_KEY_ID</kbd>, <kbd>AWS_EXECUTION_ENV</kbd>, <kbd>AWS_LAMBDA_FUNCTION_MEMORY_SIZE</kbd>, <kbd>AWS_LAMBDA_FUNCTION_NAME</kbd>, <kbd>AWS_LAMBDA_FUNCTION_VERSION</kbd>, <kbd>AWS_LAMBDA_LOG_GROUP_NAME</kbd>, <kbd>AWS_LAMBDA_LOG_STREAM_NAME</kbd>, <kbd>AWS_LAMBDA_RUNTIME_API</kbd>, <kbd>AWS_REGION</kbd>, <kbd>AWS_SECRET_ACCESS_KEY</kbd>, <kbd>AWS_SESSION_TOKEN</kbd>, <kbd>LAMBDA_RUNTIME_DIR</kbd>, <kbd>LAMBDA_TASK_ROOT</kbd>, <kbd>TZ</kbd>"
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      key:
                        type: string
                        examples:
                          - STRIPE_API_KEY
                      is_secret:
                        type: boolean
                        examples:
                          - true
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Global secret updated successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcde
                      key: STRIPE_API_KEY
                      is_secret: true
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Global secret updated successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Global secret not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Global secret not found'
                    http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      key:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'The secret key must start with a letter and contain only uppercase letters, numbers, and underscores.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      key:
                        - 'The secret key must start with a letter and contain only uppercase letters, numbers, and underscores.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Account
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                key:
                  type: string
                  description: 'The new secret key name. Must start with a letter and contain only uppercase letters, numbers, and underscores.'
                  examples:
                    - STRIPE_API_KEY
                value:
                  type: string
                  description: 'The new secret value.'
                  examples:
                    - sk_live_yyyy
                is_secret:
                  type: boolean
                  description: 'Whether this is a secret or a plain environment variable.'
                  examples:
                    - true
    delete:
      summary: 'Delete Secret'
      operationId: accountSecretsDeleteSecret
      description: 'Deletes a global secret from your account.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      key:
                        type: string
                        examples:
                          - STRIPE_SECRET_KEY
                      is_secret:
                        type: boolean
                        examples:
                          - true
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Global secret deleted successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcde
                      key: STRIPE_SECRET_KEY
                      is_secret: true
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Global secret deleted successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Global secret not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Global secret not found'
                    http_status: 404
      tags:
        - Account
    parameters:
      -
        in: path
        name: secret
        description: 'The secret ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcde
  '/api/v1/vector/api-keys/{token}':
    delete:
      summary: 'Delete API Key'
      operationId: accountAPIKeysDeleteAPIKey
      description: "Deletes an API key. You cannot delete the token currently being used\nfor authentication. This operation is irreversible."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      name:
                        type: string
                        examples:
                          - 'Production API Key'
                      abilities:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - '*'
                      last_used_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      expires_at:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'API key deleted successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      name: 'Production API Key'
                      abilities:
                        - '*'
                      last_used_at: '2025-01-15T12:00:00+00:00'
                      expires_at: null
                      created_at: '2025-01-15T12:00:00+00:00'
                    message: 'API key deleted successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: 'Cannot Delete Current Token'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Cannot delete the token currently in use'
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: 'Cannot delete the token currently in use'
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'API key not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'API key not found'
                    http_status: 404
      tags:
        - Account
    parameters:
      -
        in: path
        name: token
        description: 'The API key ID.'
        required: true
        schema:
          type: integer
          examples:
            - 1
  /api/v1/auth/whoami:
    get:
      summary: 'Get authenticated user details'
      operationId: getAuthenticatedUserDetails
      description: 'Returns the current user, active API token, and current account.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      user:
                        type: object
                        properties:
                          id:
                            type: integer
                            examples:
                              - 1
                          name:
                            type: string
                            examples:
                              - 'John Doe'
                          email:
                            type: string
                            examples:
                              - john@example.com
                      token:
                        type: object
                        properties:
                          name:
                            type: string
                            examples:
                              - vector-cli
                          abilities:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - '*'
                          expires_at:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          last_used_at:
                            type: string
                            examples:
                              - '2026-03-14T12:00:00.000000Z'
                      account:
                        type: object
                        properties:
                          id:
                            type: integer
                            examples:
                              - 1
                          name:
                            type: string
                            examples:
                              - 'Acme Inc'
                  message:
                    type: string
                    examples:
                      - Success
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      user:
                        id: 1
                        name: 'John Doe'
                        email: john@example.com
                      token:
                        name: vector-cli
                        abilities:
                          - '*'
                        expires_at: null
                        last_used_at: '2026-03-14T12:00:00.000000Z'
                      account:
                        id: 1
                        name: 'Acme Inc'
                    message: Success
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    examples:
                      - Unauthenticated.
                examples:
                  -
                    message: Unauthenticated.
      tags:
        - Authentication
  /api/v1/vector/backups:
    get:
      summary: 'List Backups'
      operationId: listBackups
      description: 'Retrieves a paginated list of backups, optionally filtered by type, site, or environment.'
      parameters:
        -
          in: query
          name: type
          description: 'Filter by archivable type (site, environment).'
          required: false
          schema:
            type: string
            description: 'Filter by archivable type (site, environment).'
            examples:
              - site
        -
          in: query
          name: site_id
          description: 'Filter by site ID. Returns backups for the site and all of its environments.'
          required: false
          schema:
            type: string
            description: 'Filter by site ID. Returns backups for the site and all of its environments.'
            examples:
              - 01jfgxk4nqrst5vwx9yz0abcde
        -
          in: query
          name: environment_id
          description: 'Filter by environment ID.'
          required: false
          schema:
            type: string
            description: 'Filter by environment ID.'
            examples:
              - 01jfgxk4nqrst5vwx9yz0abcde
        -
          in: query
          name: per_page
          description: 'Number of items per page (max 100). Default: 15.'
          required: false
          schema:
            type: integer
            description: 'Number of items per page (max 100). Default: 15.'
            examples:
              - 25
        -
          in: query
          name: page
          description: 'Page number for pagination. Default: 1.'
          required: false
          schema:
            type: integer
            description: 'Page number for pagination. Default: 1.'
            examples:
              - 1
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          examples:
                            - 01jfgxk4nqrst5vwx9yz0abcdg
                        archivable_type:
                          type: string
                          examples:
                            - vector_site
                        archivable_id:
                          type: string
                          examples:
                            - 01jfgxk4nqrst5vwx9yz0abcde
                        type:
                          type: string
                          examples:
                            - manual
                        type_label:
                          type: string
                          examples:
                            - Manual
                        scope:
                          type: string
                          examples:
                            - full
                        scope_label:
                          type: string
                          examples:
                            - Full
                        status:
                          type: string
                          examples:
                            - completed
                        status_label:
                          type: string
                          examples:
                            - Completed
                        description:
                          type: string
                          examples:
                            - 'Pre-deployment backup'
                        file_snapshot_id:
                          type: string
                          examples:
                            - abc123def456
                        database_snapshot_id:
                          type: string
                          examples:
                            - ghi789jkl012
                        started_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                        completed_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                        created_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                        updated_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                    examples:
                      -
                        -
                          id: 01jfgxk4nqrst5vwx9yz0abcdg
                          archivable_type: vector_site
                          archivable_id: 01jfgxk4nqrst5vwx9yz0abcde
                          type: manual
                          type_label: Manual
                          scope: full
                          scope_label: Full
                          status: completed
                          status_label: Completed
                          description: 'Pre-deployment backup'
                          file_snapshot_id: abc123def456
                          database_snapshot_id: ghi789jkl012
                          started_at: '2025-01-15T12:00:00+00:00'
                          completed_at: '2025-01-15T12:00:00+00:00'
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                  links:
                    type: object
                    properties: {  }
                  meta:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Backups retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      -
                        id: 01jfgxk4nqrst5vwx9yz0abcdg
                        archivable_type: vector_site
                        archivable_id: 01jfgxk4nqrst5vwx9yz0abcde
                        type: manual
                        type_label: Manual
                        scope: full
                        scope_label: Full
                        status: completed
                        status_label: Completed
                        description: 'Pre-deployment backup'
                        file_snapshot_id: abc123def456
                        database_snapshot_id: ghi789jkl012
                        started_at: '2025-01-15T12:00:00+00:00'
                        completed_at: '2025-01-15T12:00:00+00:00'
                        created_at: '2025-01-15T12:00:00+00:00'
                        updated_at: '2025-01-15T12:00:00+00:00'
                    links: {  }
                    meta: {  }
                    message: 'Backups retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
      tags:
        - Backups
    post:
      summary: 'Create Backup'
      operationId: createBackup
      description: "Creates a new backup for the specified site or environment. The backup is created with a\n`pending` status and an async job is dispatched to orchestrate the restic backup via an\nECS task."
      parameters: []
      responses:
        202:
          description: Accepted
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdg
                      archivable_type:
                        type: string
                        examples:
                          - vector_site
                      archivable_id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      type:
                        type: string
                        examples:
                          - manual
                      type_label:
                        type: string
                        examples:
                          - Manual
                      scope:
                        type: string
                        examples:
                          - full
                      scope_label:
                        type: string
                        examples:
                          - Full
                      status:
                        type: string
                        examples:
                          - pending
                      status_label:
                        type: string
                        examples:
                          - Pending
                      description:
                        type: string
                        examples:
                          - 'Pre-deployment backup'
                      file_snapshot_id:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      database_snapshot_id:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      started_at:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      completed_at:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Backup initiated successfully'
                  http_status:
                    type: integer
                    examples:
                      - 202
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdg
                      archivable_type: vector_site
                      archivable_id: 01jfgxk4nqrst5vwx9yz0abcde
                      type: manual
                      type_label: Manual
                      scope: full
                      scope_label: Full
                      status: pending
                      status_label: Pending
                      description: 'Pre-deployment backup'
                      file_snapshot_id: null
                      database_snapshot_id: null
                      started_at: null
                      completed_at: null
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Backup initiated successfully'
                    http_status: 202
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      site_id:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'Either a site ID or environment ID is required.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      site_id:
                        - 'Either a site ID or environment ID is required.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Backups
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                site_id:
                  type:
                    - string
                    - 'null'
                  description: 'The site ID (required if environment_id not provided).'
                  examples:
                    - 01jfgxk4nqrst5vwx9yz0abcde
                environment_id:
                  type:
                    - string
                    - 'null'
                  description: 'The environment ID (required if site_id not provided).'
                  examples:
                    - 01jfgxk4nqrst5vwx9yz0abcde
                type:
                  type: string
                  description: 'The backup type (manual, scheduled).'
                  examples:
                    - manual
                scope:
                  type: string
                  description: 'The backup scope (full, database, files). Default: full.'
                  examples:
                    - full
                description:
                  type:
                    - string
                    - 'null'
                  description: 'Optional description for the backup. Max 500 characters.'
                  examples:
                    - 'Pre-deployment backup'
              required:
                - type
  '/api/v1/vector/backups/{backup}':
    get:
      summary: 'Get Backup'
      operationId: getBackup
      description: 'Retrieves details of a specific backup.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdg
                      archivable_type:
                        type: string
                        examples:
                          - vector_site
                      archivable_id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      type:
                        type: string
                        examples:
                          - manual
                      type_label:
                        type: string
                        examples:
                          - Manual
                      scope:
                        type: string
                        examples:
                          - full
                      scope_label:
                        type: string
                        examples:
                          - Full
                      status:
                        type: string
                        examples:
                          - completed
                      status_label:
                        type: string
                        examples:
                          - Completed
                      description:
                        type: string
                        examples:
                          - 'Pre-deployment backup'
                      file_snapshot_id:
                        type: string
                        examples:
                          - abc123def456
                      database_snapshot_id:
                        type: string
                        examples:
                          - ghi789jkl012
                      started_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      completed_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Backup retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdg
                      archivable_type: vector_site
                      archivable_id: 01jfgxk4nqrst5vwx9yz0abcde
                      type: manual
                      type_label: Manual
                      scope: full
                      scope_label: Full
                      status: completed
                      status_label: Completed
                      description: 'Pre-deployment backup'
                      file_snapshot_id: abc123def456
                      database_snapshot_id: ghi789jkl012
                      started_at: '2025-01-15T12:00:00+00:00'
                      completed_at: '2025-01-15T12:00:00+00:00'
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Backup retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Backup not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Backup not found'
                    http_status: 404
      tags:
        - Backups
    parameters:
      -
        in: path
        name: backup
        description: 'The backup ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdg
  '/api/v1/vector/backups/{backup}/downloads/{download}':
    get:
      summary: 'Get Backup Download'
      operationId: backupsBackupDownloadsGetBackupDownload
      description: "Retrieves the status of a backup download. If the download is complete and\nnot expired, includes a presigned download URL."
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: Completed
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdh
                          vector_backup_id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdg
                          status:
                            type: string
                            examples:
                              - completed
                          status_label:
                            type: string
                            examples:
                              - Completed
                          s3_key:
                            type: string
                            examples:
                              - backups/downloads/01jfgxk4nqrst5vwx9yz0abcdh.tar.gz
                          size_bytes:
                            type: integer
                            examples:
                              - 52428800
                          duration_ms:
                            type: integer
                            examples:
                              - 12500
                          error_message:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          download_url:
                            type: string
                            examples:
                              - 'https://s3.amazonaws.com/bucket/backups/downloads/01jfgxk4nqrst5vwx9yz0abcdh.tar.gz?presigned=...'
                          download_expires_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          started_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          completed_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          created_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          updated_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                      message:
                        type: string
                        examples:
                          - 'Backup download retrieved successfully'
                      http_status:
                        type: integer
                        examples:
                          - 200
                    examples:
                      -
                        data:
                          id: 01jfgxk4nqrst5vwx9yz0abcdh
                          vector_backup_id: 01jfgxk4nqrst5vwx9yz0abcdg
                          status: completed
                          status_label: Completed
                          s3_key: backups/downloads/01jfgxk4nqrst5vwx9yz0abcdh.tar.gz
                          size_bytes: 52428800
                          duration_ms: 12500
                          error_message: null
                          download_url: 'https://s3.amazonaws.com/bucket/backups/downloads/01jfgxk4nqrst5vwx9yz0abcdh.tar.gz?presigned=...'
                          download_expires_at: '2025-01-15T12:00:00+00:00'
                          started_at: '2025-01-15T12:00:00+00:00'
                          completed_at: '2025-01-15T12:00:00+00:00'
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                        message: 'Backup download retrieved successfully'
                        http_status: 200
                  -
                    description: Pending
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdh
                          vector_backup_id:
                            type: string
                            examples:
                              - 01jfgxk4nqrst5vwx9yz0abcdg
                          status:
                            type: string
                            examples:
                              - processing
                          status_label:
                            type: string
                            examples:
                              - Processing
                          s3_key:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          size_bytes:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          duration_ms:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          error_message:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          download_url:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          download_expires_at:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          started_at:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          completed_at:
                            type:
                              - string
                              - 'null'
                            examples:
                              - null
                          created_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                          updated_at:
                            type: string
                            examples:
                              - '2025-01-15T12:00:00+00:00'
                      message:
                        type: string
                        examples:
                          - 'Backup download retrieved successfully'
                      http_status:
                        type: integer
                        examples:
                          - 200
                    examples:
                      -
                        data:
                          id: 01jfgxk4nqrst5vwx9yz0abcdh
                          vector_backup_id: 01jfgxk4nqrst5vwx9yz0abcdg
                          status: processing
                          status_label: Processing
                          s3_key: null
                          size_bytes: null
                          duration_ms: null
                          error_message: null
                          download_url: null
                          download_expires_at: null
                          started_at: null
                          completed_at: null
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                        message: 'Backup download retrieved successfully'
                        http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Backup download not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Backup download not found'
                    http_status: 404
      tags:
        - Backups
    parameters:
      -
        in: path
        name: backup
        description: 'The backup ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdg
      -
        in: path
        name: download
        description: 'The download ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdh
  '/api/v1/vector/backups/{backup}/downloads':
    post:
      summary: 'Create Backup Download'
      operationId: backupsBackupDownloadsCreateBackupDownload
      description: "Creates a new download request for the specified backup. The download is created with a\n`pending` status and an async job is dispatched to archive the backup snapshots."
      parameters: []
      responses:
        202:
          description: Accepted
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdh
                      vector_backup_id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdg
                      status:
                        type: string
                        examples:
                          - pending
                      status_label:
                        type: string
                        examples:
                          - Pending
                      s3_key:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      size_bytes:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      duration_ms:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      error_message:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      download_url:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      download_expires_at:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      started_at:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      completed_at:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Backup download initiated'
                  http_status:
                    type: integer
                    examples:
                      - 202
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdh
                      vector_backup_id: 01jfgxk4nqrst5vwx9yz0abcdg
                      status: pending
                      status_label: Pending
                      s3_key: null
                      size_bytes: null
                      duration_ms: null
                      error_message: null
                      download_url: null
                      download_expires_at: null
                      started_at: null
                      completed_at: null
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Backup download initiated'
                    http_status: 202
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Backup not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Backup not found'
                    http_status: 404
      tags:
        - Backups
    parameters:
      -
        in: path
        name: backup
        description: 'The backup ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdg
  /api/v1/vector/events:
    get:
      summary: 'List Events'
      operationId: listEvents
      description: "Retrieves a paginated list of event logs for the authenticated account.\nLogs are returned in reverse chronological order (newest first).\n\nEvent logs are automatically pruned after 90 days."
      parameters:
        -
          in: query
          name: from
          description: 'Filter events that occurred on or after this timestamp (ISO 8601).'
          required: false
          schema:
            type:
              - string
              - 'null'
            description: 'Filter events that occurred on or after this timestamp (ISO 8601).'
            examples:
              - '2025-01-01T00:00:00+00:00'
        -
          in: query
          name: to
          description: 'Filter events that occurred on or before this timestamp (ISO 8601).'
          required: false
          schema:
            type:
              - string
              - 'null'
            description: 'Filter events that occurred on or before this timestamp (ISO 8601).'
            examples:
              - '2025-01-31T23:59:59+00:00'
        -
          in: query
          name: event
          description: 'Filter by event type(s). Accepts a single event or comma-separated list.'
          required: false
          schema:
            type:
              - string
              - 'null'
            description: 'Filter by event type(s). Accepts a single event or comma-separated list.'
            examples:
              - 'site.provisioning.completed,deployment.completed'
        -
          in: query
          name: per_page
          description: 'Number of items per page (max 100). Default: 15.'
          required: false
          schema:
            type:
              - integer
              - 'null'
            description: 'Number of items per page (max 100). Default: 15.'
            examples:
              - 25
        -
          in: query
          name: page
          description: 'Page number for pagination. Default: 1.'
          required: false
          schema:
            type:
              - integer
              - 'null'
            description: 'Page number for pagination. Default: 1.'
            examples:
              - 1
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          examples:
                            - 01jfgxk4nqrst5vwx9yz0abcdl
                        event:
                          type: string
                          examples:
                            - site.provisioning.completed
                        model_type:
                          type: string
                          examples:
                            - VectorSite
                        model_id:
                          type: string
                          examples:
                            - 01jfgxk4nqrst5vwx9yz0abcde
                        context:
                          type:
                            - string
                            - 'null'
                          examples:
                            - null
                        actor:
                          type: object
                          properties:
                            id:
                              type: integer
                              examples:
                                - 1
                            ip:
                              type: string
                              examples:
                                - 192.0.2.1
                            token_id:
                              type: integer
                              examples:
                                - 1
                            token_name:
                              type: string
                              examples:
                                - 'Production API Key'
                        occurred_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                        created_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                    examples:
                      -
                        -
                          id: 01jfgxk4nqrst5vwx9yz0abcdl
                          event: site.provisioning.completed
                          model_type: VectorSite
                          model_id: 01jfgxk4nqrst5vwx9yz0abcde
                          context: null
                          actor:
                            id: 1
                            ip: 192.0.2.1
                            token_id: 1
                            token_name: 'Production API Key'
                          occurred_at: '2025-01-15T12:00:00+00:00'
                          created_at: '2025-01-15T12:00:00+00:00'
                  links:
                    type: object
                    properties: {  }
                  meta:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Event logs retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      -
                        id: 01jfgxk4nqrst5vwx9yz0abcdl
                        event: site.provisioning.completed
                        model_type: VectorSite
                        model_id: 01jfgxk4nqrst5vwx9yz0abcde
                        context: null
                        actor:
                          id: 1
                          ip: 192.0.2.1
                          token_id: 1
                          token_name: 'Production API Key'
                        occurred_at: '2025-01-15T12:00:00+00:00'
                        created_at: '2025-01-15T12:00:00+00:00'
                    links: {  }
                    meta: {  }
                    message: 'Event logs retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
      tags:
        - Events
  /api/v1/vector/php-versions:
    get:
      summary: 'List PHP Versions'
      operationId: listPHPVersions
      description: "Retrieves a list of all available PHP versions for Vector environments.\n\nCurrently supported versions: 7.2, 7.3, 7.4, 8.0, 8.1, 8.2, 8.3, 8.4, 8.5"
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        value:
                          type: string
                          examples:
                            - '7.2'
                        label:
                          type: string
                          examples:
                            - 'PHP 7.2'
                    examples:
                      -
                        -
                          value: '7.2'
                          label: 'PHP 7.2'
                        -
                          value: '7.3'
                          label: 'PHP 7.3'
                        -
                          value: '7.4'
                          label: 'PHP 7.4'
                        -
                          value: '8.0'
                          label: 'PHP 8.0'
                        -
                          value: '8.1'
                          label: 'PHP 8.1'
                        -
                          value: '8.2'
                          label: 'PHP 8.2'
                        -
                          value: '8.3'
                          label: 'PHP 8.3'
                        -
                          value: '8.4'
                          label: 'PHP 8.4'
                        -
                          value: '8.5'
                          label: 'PHP 8.5'
                  message:
                    type: string
                    examples:
                      - 'PHP versions retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      -
                        value: '7.2'
                        label: 'PHP 7.2'
                      -
                        value: '7.3'
                        label: 'PHP 7.3'
                      -
                        value: '7.4'
                        label: 'PHP 7.4'
                      -
                        value: '8.0'
                        label: 'PHP 8.0'
                      -
                        value: '8.1'
                        label: 'PHP 8.1'
                      -
                        value: '8.2'
                        label: 'PHP 8.2'
                      -
                        value: '8.3'
                        label: 'PHP 8.3'
                      -
                        value: '8.4'
                        label: 'PHP 8.4'
                      -
                        value: '8.5'
                        label: 'PHP 8.5'
                    message: 'PHP versions retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
      tags:
        - 'PHP Versions'
  /api/v1/vector/restores:
    get:
      summary: 'List Restores'
      operationId: listRestores
      description: "Retrieves a paginated list of restores, optionally filtered by type, site, environment,\nor backup."
      parameters:
        -
          in: query
          name: type
          description: 'Filter by archivable type (site, environment).'
          required: false
          schema:
            type: string
            description: 'Filter by archivable type (site, environment).'
            examples:
              - site
        -
          in: query
          name: site_id
          description: 'Filter by site ID.'
          required: false
          schema:
            type: string
            description: 'Filter by site ID.'
            examples:
              - 01jfgxk4nqrst5vwx9yz0abcde
        -
          in: query
          name: environment_id
          description: 'Filter by environment ID.'
          required: false
          schema:
            type: string
            description: 'Filter by environment ID.'
            examples:
              - 01jfgxk4nqrst5vwx9yz0abcde
        -
          in: query
          name: backup_id
          description: 'Filter by backup ID.'
          required: false
          schema:
            type: string
            description: 'Filter by backup ID.'
            examples:
              - 01jfgxk4nqrst5vwx9yz0abcde
        -
          in: query
          name: per_page
          description: 'Number of items per page (max 100). Default: 15.'
          required: false
          schema:
            type: integer
            description: 'Number of items per page (max 100). Default: 15.'
            examples:
              - 25
        -
          in: query
          name: page
          description: 'Page number for pagination. Default: 1.'
          required: false
          schema:
            type: integer
            description: 'Page number for pagination. Default: 1.'
            examples:
              - 1
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          examples:
                            - 01jfgxk4nqrst5vwx9yz0abcdh
                        archivable_type:
                          type: string
                          examples:
                            - vector_site
                        archivable_id:
                          type: string
                          examples:
                            - 01jfgxk4nqrst5vwx9yz0abcde
                        scope:
                          type: string
                          examples:
                            - full
                        scope_label:
                          type: string
                          examples:
                            - Full
                        trigger:
                          type: string
                          examples:
                            - manual
                        trigger_label:
                          type: string
                          examples:
                            - Manual
                        status:
                          type: string
                          examples:
                            - completed
                        status_label:
                          type: string
                          examples:
                            - Completed
                        vector_backup_id:
                          type: string
                          examples:
                            - 01jfgxk4nqrst5vwx9yz0abcdg
                        search_replace:
                          type:
                            - string
                            - 'null'
                          examples:
                            - null
                        drop_tables:
                          type: boolean
                          examples:
                            - false
                        disable_foreign_keys:
                          type: boolean
                          examples:
                            - false
                        error_message:
                          type:
                            - string
                            - 'null'
                          examples:
                            - null
                        duration_ms:
                          type: integer
                          examples:
                            - 45200
                        started_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                        completed_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                        created_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                        updated_at:
                          type: string
                          examples:
                            - '2025-01-15T12:00:00+00:00'
                    examples:
                      -
                        -
                          id: 01jfgxk4nqrst5vwx9yz0abcdh
                          archivable_type: vector_site
                          archivable_id: 01jfgxk4nqrst5vwx9yz0abcde
                          scope: full
                          scope_label: Full
                          trigger: manual
                          trigger_label: Manual
                          status: completed
                          status_label: Completed
                          vector_backup_id: 01jfgxk4nqrst5vwx9yz0abcdg
                          search_replace: null
                          drop_tables: false
                          disable_foreign_keys: false
                          error_message: null
                          duration_ms: 45200
                          started_at: '2025-01-15T12:00:00+00:00'
                          completed_at: '2025-01-15T12:00:00+00:00'
                          created_at: '2025-01-15T12:00:00+00:00'
                          updated_at: '2025-01-15T12:00:00+00:00'
                  links:
                    type: object
                    properties: {  }
                  meta:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Restores retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      -
                        id: 01jfgxk4nqrst5vwx9yz0abcdh
                        archivable_type: vector_site
                        archivable_id: 01jfgxk4nqrst5vwx9yz0abcde
                        scope: full
                        scope_label: Full
                        trigger: manual
                        trigger_label: Manual
                        status: completed
                        status_label: Completed
                        vector_backup_id: 01jfgxk4nqrst5vwx9yz0abcdg
                        search_replace: null
                        drop_tables: false
                        disable_foreign_keys: false
                        error_message: null
                        duration_ms: 45200
                        started_at: '2025-01-15T12:00:00+00:00'
                        completed_at: '2025-01-15T12:00:00+00:00'
                        created_at: '2025-01-15T12:00:00+00:00'
                        updated_at: '2025-01-15T12:00:00+00:00'
                    links: {  }
                    meta: {  }
                    message: 'Restores retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
      tags:
        - Restores
    post:
      summary: 'Create Restore'
      operationId: createRestore
      description: "Creates a new restore from a previously completed backup. The archivable (site or\nenvironment) is inferred from the backup. The restore is created with a `pending`\nstatus and an async job is dispatched to orchestrate the restic restore via an ECS task."
      parameters: []
      responses:
        202:
          description: Accepted
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdh
                      archivable_type:
                        type: string
                        examples:
                          - vector_site
                      archivable_id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      scope:
                        type: string
                        examples:
                          - full
                      scope_label:
                        type: string
                        examples:
                          - Full
                      trigger:
                        type: string
                        examples:
                          - manual
                      trigger_label:
                        type: string
                        examples:
                          - Manual
                      status:
                        type: string
                        examples:
                          - pending
                      status_label:
                        type: string
                        examples:
                          - Pending
                      vector_backup_id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdi
                      search_replace:
                        type: array
                        items:
                          type: object
                          properties:
                            from:
                              type: string
                              examples:
                                - example.org
                            to:
                              type: string
                              examples:
                                - example.com
                        examples:
                          -
                            -
                              from: example.org
                              to: example.com
                      drop_tables:
                        type: boolean
                        examples:
                          - false
                      disable_foreign_keys:
                        type: boolean
                        examples:
                          - false
                      error_message:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      duration_ms:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      started_at:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      completed_at:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Restore initiated successfully'
                  http_status:
                    type: integer
                    examples:
                      - 202
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdh
                      archivable_type: vector_site
                      archivable_id: 01jfgxk4nqrst5vwx9yz0abcde
                      scope: full
                      scope_label: Full
                      trigger: manual
                      trigger_label: Manual
                      status: pending
                      status_label: Pending
                      vector_backup_id: 01jfgxk4nqrst5vwx9yz0abcdi
                      search_replace:
                        -
                          from: example.org
                          to: example.com
                      drop_tables: false
                      disable_foreign_keys: false
                      error_message: null
                      duration_ms: null
                      started_at: null
                      completed_at: null
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Restore initiated successfully'
                    http_status: 202
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      backup_id:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'A backup ID is required.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      backup_id:
                        - 'A backup ID is required.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Restores
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                backup_id:
                  type: string
                  description: 'The ID of a completed backup to restore from. Must be a valid ULID.'
                  examples:
                    - 01jfgxk4nqrst5vwx9yz0abcdi
                scope:
                  type: string
                  description: 'The restore scope (full, database, files). Default: full.'
                  examples:
                    - full
                search_replace:
                  type: array
                  description: 'Optional search and replace pairs.'
                  items:
                    type:
                      - string
                      - 'null'
                  examples:
                    -
                      -
                        from: example.org
                        to: example.com
                drop_tables:
                  type: boolean
                  description: 'Whether to drop existing tables before restore. Default: false.'
                  examples:
                    - false
                disable_foreign_keys:
                  type: boolean
                  description: 'Whether to disable foreign key checks during restore. Default: false.'
                  examples:
                    - false
              required:
                - backup_id
  '/api/v1/vector/restores/{restore}':
    get:
      summary: 'Get Restore'
      operationId: getRestore
      description: 'Retrieves details of a specific restore.'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdh
                      archivable_type:
                        type: string
                        examples:
                          - vector_site
                      archivable_id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcde
                      scope:
                        type: string
                        examples:
                          - full
                      scope_label:
                        type: string
                        examples:
                          - Full
                      trigger:
                        type: string
                        examples:
                          - manual
                      trigger_label:
                        type: string
                        examples:
                          - Manual
                      status:
                        type: string
                        examples:
                          - completed
                      status_label:
                        type: string
                        examples:
                          - Completed
                      vector_backup_id:
                        type: string
                        examples:
                          - 01jfgxk4nqrst5vwx9yz0abcdg
                      search_replace:
                        type: array
                        items:
                          type: object
                          properties:
                            from:
                              type: string
                              examples:
                                - example.org
                            to:
                              type: string
                              examples:
                                - example.com
                        examples:
                          -
                            -
                              from: example.org
                              to: example.com
                      drop_tables:
                        type: boolean
                        examples:
                          - false
                      disable_foreign_keys:
                        type: boolean
                        examples:
                          - false
                      error_message:
                        type:
                          - string
                          - 'null'
                        examples:
                          - null
                      duration_ms:
                        type: integer
                        examples:
                          - 45200
                      started_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      completed_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      created_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-01-15T12:00:00+00:00'
                  message:
                    type: string
                    examples:
                      - 'Restore retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01jfgxk4nqrst5vwx9yz0abcdh
                      archivable_type: vector_site
                      archivable_id: 01jfgxk4nqrst5vwx9yz0abcde
                      scope: full
                      scope_label: Full
                      trigger: manual
                      trigger_label: Manual
                      status: completed
                      status_label: Completed
                      vector_backup_id: 01jfgxk4nqrst5vwx9yz0abcdg
                      search_replace:
                        -
                          from: example.org
                          to: example.com
                      drop_tables: false
                      disable_foreign_keys: false
                      error_message: null
                      duration_ms: 45200
                      started_at: '2025-01-15T12:00:00+00:00'
                      completed_at: '2025-01-15T12:00:00+00:00'
                      created_at: '2025-01-15T12:00:00+00:00'
                      updated_at: '2025-01-15T12:00:00+00:00'
                    message: 'Restore retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Restore not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Restore not found'
                    http_status: 404
      tags:
        - Restores
    parameters:
      -
        in: path
        name: restore
        description: 'The restore ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdh
  /api/v1/vector/webhooks:
    get:
      summary: 'List Webhooks'
      operationId: listWebhooks
      description: "Retrieves a paginated list of all webhooks for the authenticated account.\nWebhook secrets are never included in list responses."
      parameters:
        -
          in: query
          name: per_page
          description: 'Number of items per page (max 100). Default: 15.'
          required: false
          schema:
            type: integer
            description: 'Number of items per page (max 100). Default: 15.'
            examples:
              - 25
        -
          in: query
          name: page
          description: 'Page number for pagination. Default: 1.'
          required: false
          schema:
            type: integer
            description: 'Page number for pagination. Default: 1.'
            examples:
              - 1
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          examples:
                            - 01JFGXK4NQRST5VWX9YZ0ABCDI
                        account_id:
                          type: integer
                          examples:
                            - 1
                        type:
                          type: string
                          examples:
                            - http
                        type_label:
                          type: string
                          examples:
                            - Http
                        url:
                          type: string
                          examples:
                            - 'https://example.com/webhook'
                        events:
                          type: array
                          items:
                            type: string
                          examples:
                            -
                              - site.created
                              - deployment.completed
                        enabled:
                          type: boolean
                          examples:
                            - true
                        created_at:
                          type: string
                          examples:
                            - '2025-05-27T09:50:21+00:00'
                        updated_at:
                          type: string
                          examples:
                            - '2025-05-27T09:50:21+00:00'
                    examples:
                      -
                        -
                          id: 01JFGXK4NQRST5VWX9YZ0ABCDI
                          account_id: 1
                          type: http
                          type_label: Http
                          url: 'https://example.com/webhook'
                          events:
                            - site.created
                            - deployment.completed
                          enabled: true
                          created_at: '2025-05-27T09:50:21+00:00'
                          updated_at: '2025-05-27T09:50:21+00:00'
                  links:
                    type: object
                    properties: {  }
                  meta:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Webhooks retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      -
                        id: 01JFGXK4NQRST5VWX9YZ0ABCDI
                        account_id: 1
                        type: http
                        type_label: Http
                        url: 'https://example.com/webhook'
                        events:
                          - site.created
                          - deployment.completed
                        enabled: true
                        created_at: '2025-05-27T09:50:21+00:00'
                        updated_at: '2025-05-27T09:50:21+00:00'
                    links: {  }
                    meta: {  }
                    message: 'Webhooks retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
      tags:
        - Webhooks
    post:
      summary: 'Create Webhook'
      operationId: createWebhook
      description: "Creates a new webhook for the current account.\n\n> [!WARNING]\n> For HTTP webhooks, the secret is returned ONLY in this response. Store it securely—it cannot be retrieved again (only rotated via the rotate-secret endpoint).\n\nSlack webhooks do not require secrets as they use URL-based authentication."
      parameters: []
      responses:
        201:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'HTTP Webhook Created'
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01JFGXK4NQRST5VWX9YZ0ABCDI
                          account_id:
                            type: integer
                            examples:
                              - 1
                          type:
                            type: string
                            examples:
                              - http
                          type_label:
                            type: string
                            examples:
                              - Http
                          url:
                            type: string
                            examples:
                              - 'https://example.com/webhook'
                          events:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - site.created
                                - deployment.completed
                          secret:
                            type: string
                            examples:
                              - a1b2c3d4e5f6789012345678901234567890123456789012345678901234abcd
                          enabled:
                            type: boolean
                            examples:
                              - true
                          created_at:
                            type: string
                            examples:
                              - '2025-05-27T09:50:21+00:00'
                          updated_at:
                            type: string
                            examples:
                              - '2025-05-27T09:50:21+00:00'
                      message:
                        type: string
                        examples:
                          - 'Webhook created successfully. Store the secret securely - it will not be shown again.'
                      http_status:
                        type: integer
                        examples:
                          - 201
                    examples:
                      -
                        data:
                          id: 01JFGXK4NQRST5VWX9YZ0ABCDI
                          account_id: 1
                          type: http
                          type_label: Http
                          url: 'https://example.com/webhook'
                          events:
                            - site.created
                            - deployment.completed
                          secret: a1b2c3d4e5f6789012345678901234567890123456789012345678901234abcd
                          enabled: true
                          created_at: '2025-05-27T09:50:21+00:00'
                          updated_at: '2025-05-27T09:50:21+00:00'
                        message: 'Webhook created successfully. Store the secret securely - it will not be shown again.'
                        http_status: 201
                  -
                    description: 'Slack Webhook Created'
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            examples:
                              - 01JFGXK4NQRST5VWX9YZ0ABCDI
                          account_id:
                            type: integer
                            examples:
                              - 1
                          type:
                            type: string
                            examples:
                              - slack
                          type_label:
                            type: string
                            examples:
                              - Slack
                          url:
                            type: string
                            examples:
                              - 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX'
                          events:
                            type: array
                            items:
                              type: string
                            examples:
                              -
                                - deployment.completed
                                - deployment.failed
                          enabled:
                            type: boolean
                            examples:
                              - true
                          created_at:
                            type: string
                            examples:
                              - '2025-05-27T09:50:21+00:00'
                          updated_at:
                            type: string
                            examples:
                              - '2025-05-27T09:50:21+00:00'
                      message:
                        type: string
                        examples:
                          - 'Slack webhook created successfully.'
                      http_status:
                        type: integer
                        examples:
                          - 201
                    examples:
                      -
                        data:
                          id: 01JFGXK4NQRST5VWX9YZ0ABCDI
                          account_id: 1
                          type: slack
                          type_label: Slack
                          url: 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX'
                          events:
                            - deployment.completed
                            - deployment.failed
                          enabled: true
                          created_at: '2025-05-27T09:50:21+00:00'
                          updated_at: '2025-05-27T09:50:21+00:00'
                        message: 'Slack webhook created successfully.'
                        http_status: 201
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      events:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'At least one event must be specified.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      events:
                        - 'At least one event must be specified.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Webhooks
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                type:
                  type: string
                  description: 'The webhook type. Options: `http`, `slack`. Default: http.'
                  examples:
                    - http
                url:
                  type: string
                  description: 'The webhook URL. For HTTP: must use HTTPS. For Slack: must be a Slack webhook URL.'
                  examples:
                    - 'https://example.com/webhook'
                events:
                  type: array
                  description: 'Array of events to subscribe to. See available events below.'
                  items:
                    type: string
                  examples:
                    -
                      - site.created
                      - deployment.completed
                enabled:
                  type: boolean
                  description: 'Whether the webhook is enabled. Default: true.'
                  examples:
                    - true
              required:
                - url
                - events
  '/api/v1/vector/webhooks/{webhook}':
    get:
      summary: 'Get Webhook'
      operationId: getWebhook
      description: "Retrieves details of a specific webhook. The secret is never included\nin this response - use the rotate-secret endpoint if you need a new secret."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01JFGXK4NQRST5VWX9YZ0ABCDI
                      account_id:
                        type: integer
                        examples:
                          - 1
                      type:
                        type: string
                        examples:
                          - http
                      type_label:
                        type: string
                        examples:
                          - Http
                      url:
                        type: string
                        examples:
                          - 'https://example.com/webhook'
                      events:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - site.created
                            - deployment.completed
                      enabled:
                        type: boolean
                        examples:
                          - true
                      created_at:
                        type: string
                        examples:
                          - '2025-05-27T09:50:21+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-05-27T09:50:21+00:00'
                  message:
                    type: string
                    examples:
                      - 'Webhook retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01JFGXK4NQRST5VWX9YZ0ABCDI
                      account_id: 1
                      type: http
                      type_label: Http
                      url: 'https://example.com/webhook'
                      events:
                        - site.created
                        - deployment.completed
                      enabled: true
                      created_at: '2025-05-27T09:50:21+00:00'
                      updated_at: '2025-05-27T09:50:21+00:00'
                    message: 'Webhook retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Webhook not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Webhook not found'
                    http_status: 404
      tags:
        - Webhooks
    put:
      summary: 'Update Webhook'
      operationId: updateWebhook
      description: "Updates an existing webhook configuration. The secret cannot be updated\nthrough this endpoint - use the rotate-secret endpoint instead.\n\nThe webhook type cannot be changed after creation."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01JFGXK4NQRST5VWX9YZ0ABCDI
                      account_id:
                        type: integer
                        examples:
                          - 1
                      type:
                        type: string
                        examples:
                          - http
                      type_label:
                        type: string
                        examples:
                          - Http
                      url:
                        type: string
                        examples:
                          - 'https://example.com/new-webhook'
                      events:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - site.created
                            - site.updated
                      enabled:
                        type: boolean
                        examples:
                          - false
                      created_at:
                        type: string
                        examples:
                          - '2025-05-27T09:50:21+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-05-27T10:30:45+00:00'
                  message:
                    type: string
                    examples:
                      - 'Webhook updated successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01JFGXK4NQRST5VWX9YZ0ABCDI
                      account_id: 1
                      type: http
                      type_label: Http
                      url: 'https://example.com/new-webhook'
                      events:
                        - site.created
                        - site.updated
                      enabled: false
                      created_at: '2025-05-27T09:50:21+00:00'
                      updated_at: '2025-05-27T10:30:45+00:00'
                    message: 'Webhook updated successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Webhook not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Webhook not found'
                    http_status: 404
        422:
          description: 'Validation Error'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  errors:
                    type: object
                    properties:
                      events:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - 'At least one event must be specified.'
                  message:
                    type: string
                    examples:
                      - 'Validation failed'
                  http_status:
                    type: integer
                    examples:
                      - 422
                examples:
                  -
                    data: {  }
                    errors:
                      events:
                        - 'At least one event must be specified.'
                    message: 'Validation failed'
                    http_status: 422
      tags:
        - Webhooks
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                url:
                  type: string
                  description: 'The webhook URL. Must use HTTPS for HTTP webhooks.'
                  examples:
                    - 'https://example.com/new-webhook'
                events:
                  type: array
                  description: 'Array of events to subscribe to.'
                  items:
                    type: string
                  examples:
                    -
                      - site.created
                      - site.updated
                enabled:
                  type: boolean
                  description: 'Whether the webhook is enabled.'
                  examples:
                    - false
    delete:
      summary: 'Delete Webhook'
      operationId: deleteWebhook
      description: "Deletes a webhook. All associated delivery logs will also be deleted.\nThis operation is irreversible."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        examples:
                          - 01JFGXK4NQRST5VWX9YZ0ABCDI
                      account_id:
                        type: integer
                        examples:
                          - 1
                      type:
                        type: string
                        examples:
                          - http
                      type_label:
                        type: string
                        examples:
                          - Http
                      url:
                        type: string
                        examples:
                          - 'https://example.com/webhook'
                      events:
                        type: array
                        items:
                          type: string
                        examples:
                          -
                            - site.created
                      enabled:
                        type: boolean
                        examples:
                          - true
                      created_at:
                        type: string
                        examples:
                          - '2025-05-27T09:50:21+00:00'
                      updated_at:
                        type: string
                        examples:
                          - '2025-05-27T09:50:21+00:00'
                  message:
                    type: string
                    examples:
                      - 'Webhook deleted successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      id: 01JFGXK4NQRST5VWX9YZ0ABCDI
                      account_id: 1
                      type: http
                      type_label: Http
                      url: 'https://example.com/webhook'
                      events:
                        - site.created
                      enabled: true
                      created_at: '2025-05-27T09:50:21+00:00'
                      updated_at: '2025-05-27T09:50:21+00:00'
                    message: 'Webhook deleted successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Webhook not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Webhook not found'
                    http_status: 404
      tags:
        - Webhooks
    parameters:
      -
        in: path
        name: webhook
        description: 'The webhook ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdi
  '/api/v1/vector/webhooks/{webhook}/logs':
    get:
      summary: 'List Logs'
      operationId: listLogs
      description: "Retrieves a paginated list of delivery logs for a specific webhook.\nLogs are returned in reverse chronological order (newest first).\n\nEach log entry includes the event type, request payload, response details,\nand latency information. Logs are automatically pruned after 90 days."
      parameters:
        -
          in: query
          name: per_page
          description: 'Number of items per page (max 100). Default: 15.'
          required: false
          schema:
            type: integer
            description: 'Number of items per page (max 100). Default: 15.'
            examples:
              - 25
        -
          in: query
          name: page
          description: 'Page number for pagination. Default: 1.'
          required: false
          schema:
            type: integer
            description: 'Page number for pagination. Default: 1.'
            examples:
              - 1
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          examples:
                            - 01JFGXK4NQRST5VWX9YZ0ABCDJ
                        vector_webhook_delivery_id:
                          type: string
                          examples:
                            - 01JFGXK4NQRST5VWX9YZ0ABCDK
                        vector_webhook_id:
                          type: string
                          examples:
                            - 01JFGXK4NQRST5VWX9YZ0ABCDI
                        event:
                          type: string
                          examples:
                            - vector.site.created
                        request_body:
                          type: object
                          properties:
                            event:
                              type: string
                              examples:
                                - vector.site.created
                            data:
                              type: object
                              properties: {  }
                        attempt:
                          type: integer
                          examples:
                            - 1
                        response_status:
                          type: integer
                          examples:
                            - 200
                        response_body:
                          type: string
                          examples:
                            - '{"success": true}'
                        response_headers:
                          type: object
                          properties:
                            content-type:
                              type: string
                              examples:
                                - application/json
                        latency_ms:
                          type: integer
                          examples:
                            - 150
                        created_at:
                          type: string
                          examples:
                            - '2025-05-27T09:50:21+00:00'
                    examples:
                      -
                        -
                          id: 01JFGXK4NQRST5VWX9YZ0ABCDJ
                          vector_webhook_delivery_id: 01JFGXK4NQRST5VWX9YZ0ABCDK
                          vector_webhook_id: 01JFGXK4NQRST5VWX9YZ0ABCDI
                          event: vector.site.created
                          request_body:
                            event: vector.site.created
                            data: []
                          attempt: 1
                          response_status: 200
                          response_body: '{"success": true}'
                          response_headers:
                            content-type: application/json
                          latency_ms: 150
                          created_at: '2025-05-27T09:50:21+00:00'
                  links:
                    type: object
                    properties: {  }
                  meta:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Webhook logs retrieved successfully'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      -
                        id: 01JFGXK4NQRST5VWX9YZ0ABCDJ
                        vector_webhook_delivery_id: 01JFGXK4NQRST5VWX9YZ0ABCDK
                        vector_webhook_id: 01JFGXK4NQRST5VWX9YZ0ABCDI
                        event: vector.site.created
                        request_body:
                          event: vector.site.created
                          data: {  }
                        attempt: 1
                        response_status: 200
                        response_body: '{"success": true}'
                        response_headers:
                          content-type: application/json
                        latency_ms: 150
                        created_at: '2025-05-27T09:50:21+00:00'
                    links: {  }
                    meta: {  }
                    message: 'Webhook logs retrieved successfully'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Webhook Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Webhook not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Webhook not found'
                    http_status: 404
      tags:
        - Webhooks
    parameters:
      -
        in: path
        name: webhook
        description: 'The webhook ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdi
  '/api/v1/vector/webhooks/{webhook}/rotate-secret':
    post:
      summary: 'Rotate Secret'
      operationId: rotateSecret
      description: "Generates a new secret for the webhook. The old secret is immediately\ninvalidated and any pending deliveries will use the new secret.\n\n> [!WARNING]\n> The new secret is returned ONLY in this response. Store it securely—it cannot be retrieved again.\n\nThis endpoint is only available for HTTP webhooks. Slack webhooks do not\nuse secrets."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      secret:
                        type: string
                        examples:
                          - a1b2c3d4e5f6789012345678901234567890123456789012345678901234abcd
                  message:
                    type: string
                    examples:
                      - 'Webhook secret rotated successfully. Store the new secret securely - it will not be shown again.'
                  http_status:
                    type: integer
                    examples:
                      - 200
                examples:
                  -
                    data:
                      secret: a1b2c3d4e5f6789012345678901234567890123456789012345678901234abcd
                    message: 'Webhook secret rotated successfully. Store the new secret securely - it will not be shown again.'
                    http_status: 200
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthenticated
                  http_status:
                    type: integer
                    examples:
                      - 401
                examples:
                  -
                    data: {  }
                    message: Unauthenticated
                    http_status: 401
        403:
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - Unauthorized
                  http_status:
                    type: integer
                    examples:
                      - 403
                examples:
                  -
                    data: {  }
                    message: Unauthorized
                    http_status: 403
        404:
          description: 'Not Found'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties: {  }
                  message:
                    type: string
                    examples:
                      - 'Webhook not found'
                  http_status:
                    type: integer
                    examples:
                      - 404
                examples:
                  -
                    data: {  }
                    message: 'Webhook not found'
                    http_status: 404
      tags:
        - Webhooks
    parameters:
      -
        in: path
        name: webhook
        description: 'The webhook ID.'
        required: true
        schema:
          type: string
          examples:
            - 01jfgxk4nqrst5vwx9yz0abcdi
