Spaceship Domain Settings API

The Domain Settings API from Spaceship — 5 operation(s) for domain settings.

OpenAPI Specification

spaceship-domain-settings-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Spaceship.com Async Operations Domain Settings 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: Domain Settings
paths:
  /v1/domains/{domain}/autorenew:
    put:
      operationId: updateAutorenewal
      summary: Update the domain autorenewal state
      description: "Allows the modification of a domain's autorenewal state.\n\n### Required Permissions \n\n - <a href=\"#scopes/domains:write\">domains:write</a>\n\n### Rate Limits \n\n * The limit for updating the autorenewal state for a domain is 5 requests per domain, within 300 seconds."
      parameters:
      - name: domain
        in: path
        required: true
        description: The domain whose autorenewal state is 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:
        '200':
          description: The request was successful.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Domains.DomainAutoRenewal'
        '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:
      - Domain Settings
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Domains.DomainAutoRenewal'
        description: Provides the new autorenewal state for the domain.
      x-scopes:
      - domains:write
      x-codeSamples:
      - lang: javascript
        source: "const url = 'https://spaceship.dev/api/v1/domains/spaceship.com/autorenew';\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({isEnabled: true})\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/domains/spaceship.com/autorenew', [\n  'body' => '{\"isEnabled\":true}',\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/domains/spaceship.com/autorenew\"\n\npayload = { \"isEnabled\": True }\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/domains/spaceship.com/autorenew \\\n     --header 'X-API-Key: REPLACE_KEY_VALUE' \\\n     --header 'X-API-Secret: REPLACE_KEY_VALUE' \\\n     --header 'content-type: application/json' \\\n     --data '{\"isEnabled\":true}'"
  /v1/domains/{domain}/contacts:
    put:
      operationId: setDomainContacts
      summary: Update domain contacts
      description: "Allows the modification of domain name contacts.\n\n### Required Permissions \n\n - <a href=\"#scopes/domains:write\">domains:write</a>\n\n### Rate Limits \n\n * The limit for updating contacts for a domain is 5 requests per domain, within 300 seconds."
      parameters:
      - name: domain
        in: path
        required: true
        description: The domain whose contacts 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:
        '200':
          description: The request was successful.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Domains.PutContactsResponse'
        '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:
      - Domain Settings
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DomainContacts'
        description: Provides the new set of contacts or the domain.
      x-scopes:
      - domains:write
      x-codeSamples:
      - lang: javascript
        source: "const url = 'https://spaceship.dev/api/v1/domains/spaceship.com/contacts';\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({\n    registrant: '1ZdMXpapqp9sle5dl8BlppTJXAzf5',\n    admin: '1ZdMXpapqp9sle5dl8BlppTJXAzf5',\n    tech: '1ZdMXpapqp9sle5dl8BlppTJXAzf5',\n    billing: '1ZdMXpapqp9sle5dl8BlppTJXAzf5',\n    attributes: ['1ZdMXpapqp9sle5dl8BlppTJXAzf3', '1ZdMXpapqp9sle5dl8BlppTJXAzf2']\n  })\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/domains/spaceship.com/contacts', [\n  'body' => '{\"registrant\":\"1ZdMXpapqp9sle5dl8BlppTJXAzf5\",\"admin\":\"1ZdMXpapqp9sle5dl8BlppTJXAzf5\",\"tech\":\"1ZdMXpapqp9sle5dl8BlppTJXAzf5\",\"billing\":\"1ZdMXpapqp9sle5dl8BlppTJXAzf5\",\"attributes\":[\"1ZdMXpapqp9sle5dl8BlppTJXAzf3\",\"1ZdMXpapqp9sle5dl8BlppTJXAzf2\"]}',\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/domains/spaceship.com/contacts\"\n\npayload = {\n    \"registrant\": \"1ZdMXpapqp9sle5dl8BlppTJXAzf5\",\n    \"admin\": \"1ZdMXpapqp9sle5dl8BlppTJXAzf5\",\n    \"tech\": \"1ZdMXpapqp9sle5dl8BlppTJXAzf5\",\n    \"billing\": \"1ZdMXpapqp9sle5dl8BlppTJXAzf5\",\n    \"attributes\": [\"1ZdMXpapqp9sle5dl8BlppTJXAzf3\", \"1ZdMXpapqp9sle5dl8BlppTJXAzf2\"]\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/domains/spaceship.com/contacts \\\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  \"registrant\": \"1ZdMXpapqp9sle5dl8BlppTJXAzf5\",\n  \"admin\": \"1ZdMXpapqp9sle5dl8BlppTJXAzf5\",\n  \"tech\": \"1ZdMXpapqp9sle5dl8BlppTJXAzf5\",\n  \"billing\": \"1ZdMXpapqp9sle5dl8BlppTJXAzf5\",\n  \"attributes\": [\n    \"1ZdMXpapqp9sle5dl8BlppTJXAzf3\",\n    \"1ZdMXpapqp9sle5dl8BlppTJXAzf2\"\n  ]\n}\n'"
  /v1/domains/{domain}/nameservers:
    put:
      operationId: setDomainNameservers
      summary: Update domain nameservers
      description: "Allows the modification of DNS settings for a specific domain by replacing its current nameservers with new ones.\nThis operation is crucial to ensure that your domain points to the correct DNS servers, which is essential for routing traffic accurately and implementing changes in DNS management.\n\n### Required Permissions \n\n - <a href=\"#scopes/domains:write\">domains:write</a>\n\n### Rate Limits \n\n * The limit for updating nameservers for a domain is 5 requests per domain, within 300 seconds."
      parameters:
      - name: domain
        in: path
        required: true
        description: The domain whose nameservers should be updated. The domain name must be provided in a fully qualified domain format.
        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:
        '200':
          description: Nameservers updated successfully. The response confirms that the domain's DNS settings have been modified.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DomainNameServersConfigurationResponse'
        '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:
      - Domain Settings
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DomainNameServersConfigurationRequest'
        description: Provides the new set of nameservers for the domain. The request must include a list of nameservers that will replace the existing ones.
      x-scopes:
      - domains:write
      x-codeSamples:
      - lang: javascript
        source: "const url = 'https://spaceship.dev/api/v1/domains/spaceship.com/nameservers';\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({provider: 'custom', hosts: ['ns1.exampledomain.com', 'ns2.exampledomain.com']})\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/domains/spaceship.com/nameservers', [\n  'body' => '{\"provider\":\"custom\",\"hosts\":[\"ns1.exampledomain.com\",\"ns2.exampledomain.com\"]}',\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/domains/spaceship.com/nameservers\"\n\npayload = {\n    \"provider\": \"custom\",\n    \"hosts\": [\"ns1.exampledomain.com\", \"ns2.exampledomain.com\"]\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/domains/spaceship.com/nameservers \\\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  \"provider\": \"custom\",\n  \"hosts\": [\n    \"ns1.exampledomain.com\",\n    \"ns2.exampledomain.com\"\n  ]\n}\n'"
  /v1/domains/{domain}/privacy/email-protection-preference:
    put:
      operationId: updateDomainEmailProtectionPreference
      summary: Update domain email protection preference
      description: "Allows the modification of a domain's email protection preference.\n\n### Required Permissions \n\n - <a href=\"#scopes/domains:write\">domains:write</a>\n\n### Rate Limits \n\n * The limit for updating the domain email protection preference for a domain is 5 requests per domain, within 300 seconds."
      parameters:
      - name: domain
        in: path
        required: true
        description: The domain whose email protection preference is 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:
         

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