Spaceship DNS records API

The DNS records API from Spaceship — 1 operation(s) for dns records.

OpenAPI Specification

spaceship-dns-records-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Spaceship.com Async Operations DNS records API
  contact:
    email: support@spaceship.com
    url: https://www.spaceship.com/about/contact-us/
  description: "# Spaceship API\n\n## Authentication\n\nSpaceship API uses a combination of API key and API secret for authentication.\n\n### API key setup\nYou can generate your API key and secret in [API Manager](https://www.spaceship.com/application/api-manager/). Use the \"New API key\" button to set up a new API key and follow the guide to get started.\nAfter the key setup has been successful, it should appear on the API Manager application page.\n\n### API key usage\nAs shown in the example below, API consumers shall pass a valid API key and a corresponding API secret in the X-API-Secret headers.\nYou do not need to encode the API key and the API secret.\n```bash\ncurl -X GET '/api/resource' \\\n-H 'X-Api-Secret: F3brvQluT4s8aDB7PeFBH6qKHfH2xTKTneCjZbq3z2w7rj2vV6n_zhSvvJoQ' \\\n-H 'X-Api-Key: JdIS8QYFMZpVKupJtdc3'\n```\n\n## Asynchronous Operations\n\nSome API operations may take an extended period to complete. For these long-running operations, the API returns an HTTP 202 Accepted response with a `spaceship-async-operationid` header containing a unique operation identifier.\n\n### How Async Operations Work\n\n1. **Initiate Operation**: When you make a request that requires asynchronous processing (e.g., domain registration, transfer operations), the API immediately returns a 202 response.\n\n2. **Receive Operation ID**: The response includes the `spaceship-async-operationid` header with a unique identifier for tracking the operation.\n\n3. **Poll for Status**: Use the operation ID to poll the `/v1/async-operations/{operationId}` endpoint to check the current status of your operation.\n\n4. **Operation States**: Async operations can have the following statuses:\n   - `pending` - The operation is still in progress\n   - `success` - The operation completed successfully\n   - `failed` - The operation encountered an error and could not complete\n\n### Example Workflow\n\n```bash\n# Step 1: Initiate an async operation (e.g., domain registration)\ncurl -X POST '/api/v1/domains/example.com' \\\n-H 'X-Api-Secret: YOUR_SECRET' \\\n-H 'X-Api-Key: YOUR_KEY' \\\n-H 'Content-Type: application/json' \\\n-d '{\n  \"autoRenew\": false,\n  \"years\": 1,\n  \"privacyProtection\": {\n    \"level\": \"high\",\n    \"userConsent\": true\n  },\n  \"contacts\": {\n    \"registrant\": \"CONTACT_ID\",\n    \"admin\": \"CONTACT_ID\",\n    \"tech\": \"CONTACT_ID\",\n    \"billing\": \"CONTACT_ID\"\n  }\n}'\n\n# Response: 202 Accepted\n# Headers: spaceship-async-operationid: abc123xyz\n\n# Step 2: Check operation status\ncurl -X GET '/api/v1/async-operations/abc123xyz' \\\n-H 'X-Api-Secret: YOUR_SECRET' \\\n-H 'X-Api-Key: YOUR_KEY'\n\n# Response includes:\n# - status: \"pending\" | \"success\" | \"failed\"\n# - type: Operation type (e.g., \"domains_Create\")\n# - details: Additional information about the operation\n# - createdAt: Timestamp when operation was created\n# - modifiedAt: Timestamp of last status update\n```\n\n### Permissions \n\n - <b id=\"scopes/domains:read\">domains:read</b> - Read domain information and check configuration\n- <b id=\"scopes/domains:write\">domains:write</b> - Manage domains and domain settings\n- <b id=\"scopes/domains:transfer\">domains:transfer</b> - Transfer domains in and out\n- <b id=\"scopes/domains:billing\">domains:billing</b> - Manage domains billing operations\n- <b id=\"scopes/contacts:write\">contacts:write</b> - Save contact details\n- <b id=\"scopes/contacts:read\">contacts:read</b> - Read contact details\n- <b id=\"scopes/dnsrecords:write\">dnsrecords:write</b> - Write DNS resource records\n- <b id=\"scopes/dnsrecords:read\">dnsrecords:read</b> - Read DNS resource records\n- <b id=\"scopes/asyncoperations:read\">asyncoperations:read</b> - Read async operations details\n- <b id=\"scopes/sellerhub:read\">sellerhub:read</b> - Read SellerHub Domains\n- <b id=\"scopes/sellerhub:write\">sellerhub:write</b> - Write SellerHub Domains"
  version: 1.0.0
  x-logo:
    url: https://spaceship-cdn.com/spaceship-api-doc-assets/logo.svg
servers:
- url: https://spaceship.dev/api
  description: The main server for the Spaceship External API
  variables: {}
security:
- apiKey: []
  apiSecret: []
tags:
- name: DNS records
paths:
  /v1/dns/records/{domain}:
    put:
      operationId: saveRecords
      summary: Save resource records
      description: "Add custom DNS resource records or update TTL.\nRecords are matched using case-insensitive comparison, except for TXT records.\n\n### Required Permissions \n\n - <a href=\"#scopes/dnsrecords:write\">dnsrecords:write</a>\n\n### Rate Limits \n\n * The limit for saving resource record details is 300 requests per user, per domain, within 300 seconds."
      parameters:
      - name: domain
        in: path
        required: true
        description: The domain whose resource records are being updated.
        schema:
          type: string
          example: spaceship.com
          minLength: 4
          maxLength: 255
          format: domain
          description: Domain name in UTF-8 or ASCII format (U-label or A-label)
      responses:
        '204':
          description: There is no content to send for this request, but the headers may be useful.
        '400':
          description: The request is invalid.
          headers:
            spaceship-error-code:
              required: true
              schema:
                $ref: '#/components/schemas/errorCode'
            spaceship-operation-id:
              required: true
              schema:
                $ref: '#/components/schemas/operationId'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: The user's request was not authorized properly.
          headers:
            spaceship-error-code:
              required: true
              schema:
                $ref: '#/components/schemas/errorCode'
            spaceship-operation-id:
              required: true
              schema:
                $ref: '#/components/schemas/operationId'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: The user's request not allowed to perform this action with the current scopes.
          headers:
            spaceship-error-code:
              required: true
              schema:
                $ref: '#/components/schemas/errorCode'
            spaceship-operation-id:
              required: true
              schema:
                $ref: '#/components/schemas/operationId'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '404':
          description: The requested object was not found.
          headers:
            spaceship-error-code:
              required: true
              schema:
                $ref: '#/components/schemas/errorCode'
            spaceship-operation-id:
              required: true
              schema:
                $ref: '#/components/schemas/operationId'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ObjectNotFoundError'
        '422':
          description: The entity is unprocessable.
          headers:
            spaceship-error-code:
              required: true
              schema:
                $ref: '#/components/schemas/errorCode'
            spaceship-operation-id:
              required: true
              schema:
                $ref: '#/components/schemas/operationId'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '429':
          description: The response indicates that the rate limit for the API has been exceeded. It includes details about the rate limit, like the number of requests left and the time the rate limit window resets.
          headers:
            spaceship-error-code:
              required: true
              schema:
                $ref: '#/components/schemas/errorCode'
            spaceship-operation-id:
              required: true
              schema:
                $ref: '#/components/schemas/operationId'
            X-RateLimit-Limit:
              required: true
              description: Request limit per the allotted time window
              schema:
                type: integer
                format: int32
                minimum: 1
                maximum: 2147483647
            X-RateLimit-Remaining:
              required: true
              description: The number of requests left for the time window
              schema:
                type: integer
                format: int32
                minimum: 0
                maximum: 2147483647
            X-RateLimit-Reset:
              required: true
              description: The UTC date/time when the current rate limit window resets
              schema:
                type: integer
                format: int32
                minimum: 1
                maximum: 2147483647
            Retry-After:
              required: true
              description: The number of seconds inndicating how long the client ought to wait before making a follow-up request
              schema:
                type: integer
                format: int32
                minimum: 1
                maximum: 2147483647
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/RateLimitError'
        '500':
          description: The infrastructure encountered an error.
          headers:
            spaceship-error-code:
              required: true
              schema:
                $ref: '#/components/schemas/errorCode'
            spaceship-operation-id:
              required: true
              schema:
                $ref: '#/components/schemas/operationId'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/UnexpectedError'
      tags:
      - DNS records
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Records.RecordsUpdateModel'
            examples:
              AAAA:
                value:
                  force: true
                  items:
                  - type: A
                    address: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
                    name: '@'
                    ttl: 3600
              ALIAS:
                value:
                  force: true
                  items:
                  - type: A
                    aliasName: '@'
                    name: '@'
                    ttl: 3600
              A:
                value:
                  force: true
                  items:
                  - type: A
                    address: 127.0.0.1
                    name: '@'
                    ttl: 3600
              CAA:
                value:
                  force: true
                  items:
                  - type: A
                    flag: 0
                    tag: issue
                    value: string
                    name: '@'
                    ttl: 3600
              CNAME:
                value:
                  force: true
                  items:
                  - type: A
                    cname: '@'
                    name: '@'
                    ttl: 3600
              HTTPS:
                value:
                  force: true
                  items:
                  - type: A
                    port: _8443
                    scheme: _https
                    svcPriority: 1
                    targetName: _443._https.www.example.com
                    svcParams: ''
                    name: '@'
                    ttl: 3600
              MX:
                value:
                  force: true
                  items:
                  - type: A
                    exchange: '@'
                    preference: 65535
                    name: '@'
                    ttl: 3600
              NS:
                value:
                  force: true
                  items:
                  - type: A
                    nameserver: '@'
                    name: '@'
                    ttl: 3600
              PTR:
                value:
                  force: true
                  items:
                  - type: A
                    pointer: '@'
                    name: '@'
                    ttl: 3600
              SRV:
                value:
                  force: true
                  items:
                  - type: A
                    service: string
                    protocol: string
                    priority: 65535
                    weight: 65535
                    port: 1
                    target: '@'
                    name: '@'
                    ttl: 3600
              SVCB:
                value:
                  force: true
                  items:
                  - type: A
                    port: _443
                    scheme: _tcp
                    svcPriority: 1
                    targetName: _443._https.www.example.com
                    svcParams: ''
                    name: '@'
                    ttl: 3600
              TLSA:
                value:
                  force: true
                  items:
                  - type: A
                    port: _443
                    protocol: _tcp
                    usage: 2
                    selector: 1
                    matching: 1
                    associationData: 7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069
                    name: '@'
                    ttl: 3600
              TXT:
                value:
                  force: true
                  items:
                  - type: A
                    value: v=spf1 a mx -all
                    name: '@'
                    ttl: 3600
      x-scopes:
      - dnsrecords:write
      x-codeSamples:
      - lang: javascript
        source: "const url = 'https://spaceship.dev/api/v1/dns/records/spaceship.com';\nconst options = {\n  method: 'PUT',\n  headers: {\n    'X-API-Key': 'REPLACE_KEY_VALUE',\n    'X-API-Secret': 'REPLACE_KEY_VALUE',\n    'content-type': 'application/json'\n  },\n  body: JSON.stringify({force: true, items: [{type: 'A', name: '@', ttl: 3600}]})\n};\n\nfetch(url, options)\n  .then(res => res.json())\n  .then(json => console.log(json))\n  .catch(err => console.error(err));"
      - lang: php
        source: "<?php\nrequire_once('vendor/autoload.php');\n\n$client = new \\GuzzleHttp\\Client();\n\n$response = $client->request('PUT', 'https://spaceship.dev/api/v1/dns/records/spaceship.com', [\n  'body' => '{\"force\":true,\"items\":[{\"type\":\"A\",\"name\":\"@\",\"ttl\":3600}]}',\n  'headers' => [\n    'X-API-Key' => 'REPLACE_KEY_VALUE',\n    'X-API-Secret' => 'REPLACE_KEY_VALUE',\n    'content-type' => 'application/json',\n  ],\n]);\n\necho $response->getBody();"
      - lang: python
        source: "import requests\n\nurl = \"https://spaceship.dev/api/v1/dns/records/spaceship.com\"\n\npayload = {\n    \"force\": True,\n    \"items\": [\n        {\n            \"type\": \"A\",\n            \"name\": \"@\",\n            \"ttl\": 3600\n        }\n    ]\n}\nheaders = {\n    \"X-API-Key\": \"REPLACE_KEY_VALUE\",\n    \"X-API-Secret\": \"REPLACE_KEY_VALUE\",\n    \"content-type\": \"application/json\"\n}\n\nresponse = requests.put(url, json=payload, headers=headers)\n\nprint(response.text)"
      - lang: shell
        source: "curl --request PUT \\\n     --url https://spaceship.dev/api/v1/dns/records/spaceship.com \\\n     --header 'X-API-Key: REPLACE_KEY_VALUE' \\\n     --header 'X-API-Secret: REPLACE_KEY_VALUE' \\\n     --header 'content-type: application/json' \\\n     --data '\n{\n  \"force\": true,\n  \"items\": [\n    {\n      \"type\": \"A\",\n      \"name\": \"@\",\n      \"ttl\": 3600\n    }\n  ]\n}\n'"
    delete:
      operationId: deleteRecords
      summary: Delete resource records
      description: "Delete custom DNS resource records.\nRecords matched using case-insensitive comparison, except for TXT records, which are case-sensitive.\n\n### Required Permissions \n\n - <a href=\"#scopes/dnsrecords:write\">dnsrecords:write</a>\n\n### Rate Limits \n\n * The limit for deleting resource record details is 300 requests per user, per domain, within 300 seconds."
      parameters:
      - name: domain
        in: path
        required: true
        description: The domain whose resource records are being deleted.
        schema:
          type: string
          example: spaceship.com
          minLength: 4
          maxLength: 255
          format: domain
          description: Domain name in UTF-8 or ASCII format (U-label or A-label)
      responses:
        '204':
          description: There is no content to send for this request, but the headers may be useful.
        '400':
          description: The request is invalid.
          headers:
            spaceship-error-code:
              required: true
              schema:
                $ref: '#/components/schemas/errorCode'
            spaceship-operation-id:
              required: true
              schema:
                $ref: '#/components/schemas/operationId'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: The user's request was not authorized properly.
          headers:
            spaceship-error-code:
              required: true
              schema:
                $ref: '#/components/schemas/errorCode'
            spaceship-operation-id:
              required: true
              schema:
                $ref: '#/components/schemas/operationId'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: The user's request not allowed to perform this action with the current scopes.
          headers:
            spaceship-error-code:
              required: true
              schema:
                $ref: '#/components/schemas/errorCode'
            spaceship-operation-id:
              required: true
              schema:
                $ref: '#/components/schemas/operationId'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '404':
          description: The requested object was not found.
          headers:
            spaceship-error-code:
              required: true
              schema:
                $ref: '#/components/schemas/errorCode'
            spaceship-operation-id:
              required: true
              schema:
                $ref: '#/components/schemas/operationId'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ObjectNotFoundError'
        '422':
          description: The entity is unprocessable.
          headers:
            spaceship-error-code:
              required: true
              schema:
                $ref: '#/components/schemas/errorCode'
            spaceship-operation-id:
              required: true
              schema:
                $ref: '#/components/schemas/operationId'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '429':
          description: The response indicates that the rate limit for the API has been exceeded. It includes details about the rate limit, like the number of requests left and the time the rate limit window resets.
          headers:
            spaceship-error-code:
              required: true
              schema:
                $ref: '#/components/schemas/errorCode'
            spaceship-operation-id:
              required: true
              schema:
                $ref: '#/components/schemas/operationId'
            X-RateLimit-Limit:
              required: true
              description: Request limit per the allotted time window
              schema:
                type: integer
                format: int32
                minimum: 1
                maximum: 2147483647
            X-RateLimit-Remaining:
              required: true
              description: The number of requests left for the time window
              schema:
                type: integer
                format: int32
                minimum: 0
                maximum: 2147483647
            X-RateLimit-Reset:
              required: true
              description: The UTC date/time when the current rate limit window resets
              schema:
                type: integer
                format: int32
                minimum: 1
                maximum: 2147483647
            Retry-After:
              required: true
              description: The number of seconds inndicating how long the client ought to wait before making a follow-up request
              schema:
                type: integer
                format: int32
                minimum: 1
                maximum: 2147483647
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/RateLimitError'
        '500':
          description: The infrastructure encountered an error.
          headers:
            spaceship-error-code:
              required: true
              schema:
                $ref: '#/components/schemas/errorCode'
            spaceship-operation-id:
              required: true
              schema:
                $ref: '#/components/schemas/operationId'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/UnexpectedError'
      tags:
      - DNS records
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResourceRecordsListDeleteItem'
            examples:
              AAAA:
                value:
                - type: A
                  address: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
                  name: '@'
              ALIAS:
                value:
                - type: A
                  aliasName: '@'
                  name: '@'
              A:
                value:
                - type: A
                  address: 127.0.0.1
                  name: '@'
              CAA:
                value:
                - type: A
                  flag: 0
                  tag: issue
                  value: string
                  name: '@'
              CNAME:
                value:
                - type: A
                  cname: '@'
                  name: '@'
              HTTPS:
                value:
                - type: A
                  port: _8443
                  scheme: _https
                  svcPriority: 1
                  targetName: _443._https.www.example.com
                  svcParams: ''
                  name: '@'
              MX:
                value:
                - type: A
                  exchange: '@'
                  preference: 65535
                  name: '@'
              NS:
                value:
                - type: A
                  nameserver: '@'
                  name: '@'
              PTR:
                value:
                - type: A
                  pointer: '@'
                  name: '@'
              SRV:
                value:
                - type: A
                  service: string
                  protocol: string
                  priority: 65535
                  weight: 65535
                  port: 1
                  target: '@'
                  name: '@'
              SVCB:
                value:
                - type: A
                  port: _443
                  scheme: _tcp
                  svcPriority: 1
                  targetName: _443._https.www.example.com
                  svcParams: ''
                  name: '@'
              TLSA:
                value:
                - type: A
                  port: _443
                  protocol: _tcp
                  usage: 2
                  selector: 1
                  matching: 1
                  associationData: 7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069
                  name: '@'
              TXT:
                value:
                - type: A
                  value: v=spf1 a mx -all
                  name: '@'
        description: Records
      x-scopes:
      - dnsrecords:write
      x-codeSamples:
      - lang: javascript
        source: "const url = 'https://spaceship.dev/api/v1/dns/records/spaceship.com';\nconst options = {\n  method: 'DELETE',\n  headers: {\n    'X-API-Key': 'REPLACE_KEY_VALUE',\n    'X-API-Secret': 'REPLACE_KEY_VALUE',\n    'content-type': 'application/json'\n  },\n  body: JSON.stringify([{type: 'A', name: '@'}])\n};\n\nfetch(url, options)\n  .then(res => res.json())\n  .then(json => console.log(json))\n  .catch(err => console.error(err));"
      - lang: php
        source: "<?php\nrequire_once('vendor/autoload.php');\n\n$client = new \\GuzzleHttp\\Client();\n\n$response = $client->request('DELETE', 'https://spaceship.dev/api/v1/dns/records/spaceship.com', [\n  'body' => '[{\"type\":\"A\",\"name\":\"@\"}]',\n  'headers' => [\n    'X-API-Key' => 'REPLACE_KEY_VALUE',\n    'X-API-Secret' => 'REPLACE_KEY_VALUE',\n    'content-type' => 'application/json',\n  ],\n]);\n\necho $response->getBody();"
      - lang: python
        source: "import requests\n\nurl = \"https://spaceship.dev/api/v1/dns/records/spaceship.com\"\n\npayload = [\n    {\n        \"type\": \"A\",\n        \"name\": \"@\"\n    }\n]\nheaders = {\n    \"X-API-Key\": \"REPLACE_KEY_VALUE\",\n    \"X-API-Secret\": \"REPLACE_KEY_VALUE\",\n    \"content-type\": \"application/json\"\n}\n\nresponse = requests.delete(url, json=payload, headers=headers)\n\nprint(response.text)"
      - lang: shell
        source: "curl --request DELETE \\\n     --url https://spaceship.dev/api/v1/dns/records/spaceship.com \\\n     --header 'X-API-Key: REPLACE_KEY_VALUE' \\\n     --header 'X-API-Secret: REPLACE_KEY_VALUE' \\\n     --header 'content-type: application/json' \\\n     --data '\n[\n  {\n    \"type\": \"A\",\n    \"name\": \"@\"\n  }\n]\n'"
    get:
      operationId: getResourceRecordsList
      summary: Get domain resource records list
      description: "Retrieves a paginated list of resource records, allowing the use of query parameters to customize the response.\nThis operation is essential for efficiently managing large collections of resource records, enabling smooth navigation and retrieval without overloading the system with unnecessary data.\n\n### Required Permissions \n\n - <a href=\"#scopes/dnsrecords:read\">dnsrecords:read</a>\n\n### Rate Limits \n\n * The limit for getting the domain resource records list is 300 requests per user, within 300 seconds."
      parameters:
      - name: domain
        in: path
        required: true
        description: The domain whose resource records are being fetched.
        schema:
          type: string
          example: spaceship.com
          minLength: 4
          maxLength: 255
          format: domain
          description: Domain name in UTF-8 or ASCII format (U-label or A-label)
      - name: take
        in: query
        required: true
        description: Number of response items per page
        schema:
          type: integer
          format: int32
          minimum: 1
          maximum: 500
        explode: false
      - name: skip
        in: query
        required: true
        description: Number of response items to skip
        schema:
          type: integer
          format: int32
          minimum: 0
          maximum: 2147483647
        explode: false
      - name: orderBy
        in: query
        required: false
        description: Specifies fields and order to sort the response items
        schema:
          type: array
          items:
            type: string
            enum:
            - type
            - -type
            - name
            - -name
          maxItems: 1
        explode: false
      responses:
        '200':
          description: Resource records list.
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/ResourceRecord'
                    maxItems: 100
                  total:
                    type: integer
                    format: int32
                    example: 100
                    minimum: 0
                    maximum: 2147483647
                required:
                - items
                - total
        '400':
          description: The request is invalid.
          headers:
            spaceship-error-code:
              required: true
              schema:
                $ref: '#/components/schemas/errorCode'
            spaceship-operation-id:
              required: true
              schema:
                $ref: '#/components/schemas/operationId'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: The user's request was not authorized properly.
          headers:
            spaceship-error-code:
              required: true
              schema:
                $ref: '#/components/schemas/errorCode'
            spaceship-operation-id:
              required: true
              schema:
                $ref: '#/components/schemas/operationId'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: The user's request not allowed to perform this action with the current scopes.
          headers:
            spaceship-error-code:
              required: true
              schema:
                $ref: '#/components/schemas/errorCode'
            spaceship-operation-id:
              required: true
              schema:
                $ref: '#/components/schemas/operationId'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '404':
          description: The requested object was not found.
          headers:
            spaceship-error-code:
              required: true
              schema:
                $ref: '#/components/schemas/errorCode'
            spaceship-operation-id:
              required: true
              schema:
                $ref: '#/components/schemas/operationId'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ObjectNotFoundError'
        '422':
          description: The entity is unprocessable.
          headers:
            spaceship-error-code:
              required: true
              schema:
                $ref: '#/components/schemas/errorCode'
            spaceship-operation-id:
              required: true
              schema:
                $ref: '#/components/schemas/operationId'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '429':
          description: The response indicates that the rate limit for the API has been exceeded. It includes details about the rate limit, like the number of requests left and the time the rate limit window resets.
          headers:
            spaceship-error-code:
              required: true
              schema:
                $ref: '#/components/schemas/errorCode'
            spaceship-operation-id:
              required: true
              schema:
                $ref: '#/components/schemas/operationId'
            X-RateLimit-Limit:
              required: true
              description: Request limit per the allotted time window
              schema:
                type: integer
                format: int

# --- truncated at 32 KB (45 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/spaceship/refs/heads/main/openapi/spaceship-dns-records-api-openapi.yml