> ## Documentation Index
> Fetch the complete documentation index at: https://help.onetsolutions.net/llms.txt
> Use this file to discover all available pages before exploring further.

# [Domains] Update domain WHOIS contacts

> Update the WHOIS contact information for a domain including registrant, administrative, technical, and billing contacts. Contact changes are submitted to the registry and may require verification depending on the TLD. Some registries may initiate a transfer verification process when changing registrant information.



## OpenAPI

````yaml https://api.onetsolutions.net/schema put /v1/organizations/{organization_id}/projects/{project_id}/domains/{id}/contacts
openapi: 3.0.3
info:
  title: OnetSolutions API
  version: v1 (v1)
  description: >

    ## Overview


    The OnetSolutions API provides programmatic access to manage your cloud
    infrastructure, domains, and web hosting services.


    ## Authentication


    All API requests require authentication using one of the following methods:


    - **JWT Token**: Obtain a token via login endpoints and include it in the
    `Authorization: Bearer <token>` header

    - **API Key**: Generate an API key from your account settings and use it as
    `Authorization: Bearer sk-onetsolutions-...`


    ## Rate Limiting


    API requests are rate-limited to ensure fair usage:

    - **Standard**: 1000 requests per minute

    - **Burst**: 100 requests per second


    ## Pagination


    List endpoints return paginated results. Use `page` and `page_size` query
    parameters.


    ## Error Handling


    The API uses standard HTTP status codes:

    - `200` Success

    - `201` Created

    - `400` Bad Request

    - `401` Unauthorized

    - `403` Forbidden

    - `404` Not Found

    - `429` Too Many Requests
servers:
  - url: https://api.onetsolutions.net
    description: Production
security: []
tags:
  - name: Authentication
    description: >-
      Login, passwordless authentication, MFA, OAuth providers, and token
      management.
  - name: Organizations
    description: >-
      Organization management, members, roles, modules, audit logs, and
      notification settings.
  - name: Projects
    description: Project management, team members, and project-scoped resources.
  - name: Compute
    description: >-
      Cloud instances, volumes, snapshots, backups, VPCs, firewalls, SSH keys,
      uptime monitors, and instance tasks.
  - name: Domains
    description: >-
      Domain availability, registration, transfers, DNS zones, DNS records, and
      TLD information.
  - name: Web Hosting
    description: >-
      cPanel-based web hosting, emails, databases, subdomains, FTP accounts,
      addon domains, and SSL certificates.
paths:
  /v1/organizations/{organization_id}/projects/{project_id}/domains/{id}/contacts:
    put:
      tags:
        - Domains
      summary: '[Domains] Update domain WHOIS contacts'
      description: >-
        Update the WHOIS contact information for a domain including registrant,
        administrative, technical, and billing contacts. Contact changes are
        submitted to the registry and may require verification depending on the
        TLD. Some registries may initiate a transfer verification process when
        changing registrant information.
      operationId: update_domain_contacts
      parameters:
        - in: path
          name: id
          schema:
            type: string
          description: The unique identifier (UUID) of the domain
          required: true
        - in: path
          name: organization_id
          schema:
            type: string
            format: uuid
          required: true
        - in: path
          name: project_id
          schema:
            type: string
            format: uuid
          required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DomainContactsUpdate'
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DomainTask'
          description: Contact update task created and queued for processing
        '400':
          description: Invalid contact information or contact does not exist
        '401':
          description: Authentication credentials were not provided or are invalid
        '403':
          description: You do not have permission to update contacts for this domain
        '404':
          description: Domain not found or does not belong to the specified project
      security:
        - BearerAuth: []
components:
  schemas:
    DomainContactsUpdate:
      type: object
      properties:
        registrant_first_name:
          type: string
          maxLength: 100
        registrant_last_name:
          type: string
          maxLength: 100
        registrant_organization:
          type: string
          maxLength: 255
        registrant_email:
          type: string
          format: email
        registrant_phone:
          type: string
          maxLength: 50
        registrant_address_1:
          type: string
          maxLength: 255
        registrant_address_2:
          type: string
          maxLength: 255
        registrant_city:
          type: string
          maxLength: 100
        registrant_state:
          type: string
          maxLength: 100
        registrant_postcode:
          type: string
          maxLength: 20
        registrant_country:
          type: string
          maxLength: 2
        admin_first_name:
          type: string
          maxLength: 100
        admin_last_name:
          type: string
          maxLength: 100
        admin_organization:
          type: string
          maxLength: 255
        admin_email:
          type: string
          format: email
        admin_phone:
          type: string
          maxLength: 50
        admin_address_1:
          type: string
          maxLength: 255
        admin_address_2:
          type: string
          maxLength: 255
        admin_city:
          type: string
          maxLength: 100
        admin_state:
          type: string
          maxLength: 100
        admin_postcode:
          type: string
          maxLength: 20
        admin_country:
          type: string
          maxLength: 2
        tech_first_name:
          type: string
          maxLength: 100
        tech_last_name:
          type: string
          maxLength: 100
        tech_organization:
          type: string
          maxLength: 255
        tech_email:
          type: string
          format: email
        tech_phone:
          type: string
          maxLength: 50
        tech_address_1:
          type: string
          maxLength: 255
        tech_address_2:
          type: string
          maxLength: 255
        tech_city:
          type: string
          maxLength: 100
        tech_state:
          type: string
          maxLength: 100
        tech_postcode:
          type: string
          maxLength: 20
        tech_country:
          type: string
          maxLength: 2
    DomainTask:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        task_type:
          enum:
            - register
            - transfer_in
            - transfer_out
            - renew
            - update_nameservers
            - update_contacts
            - get_epp_code
            - enable_whois_privacy
            - disable_whois_privacy
            - lock_domain
            - unlock_domain
            - create_dns_zone
            - delete_dns_zone
            - create_dns_record
            - update_dns_record
            - delete_dns_record
            - sync_dns_records
          type: string
          description: |-
            * `register` - register
            * `transfer_in` - transfer in
            * `transfer_out` - transfer out
            * `renew` - renew
            * `update_nameservers` - update nameservers
            * `update_contacts` - update contacts
            * `get_epp_code` - get epp code
            * `enable_whois_privacy` - enable whois privacy
            * `disable_whois_privacy` - disable whois privacy
            * `lock_domain` - lock domain
            * `unlock_domain` - unlock domain
            * `create_dns_zone` - create dns zone
            * `delete_dns_zone` - delete dns zone
            * `create_dns_record` - create dns record
            * `update_dns_record` - update dns record
            * `delete_dns_record` - delete dns record
            * `sync_dns_records` - sync dns records
          x-spec-enum-id: 6ee18353e5c18552
          readOnly: true
        status:
          enum:
            - pending
            - running
            - completed
            - failed
            - cancelled
          type: string
          description: |-
            * `pending` - pending
            * `running` - running
            * `completed` - completed
            * `failed` - failed
            * `cancelled` - cancelled
          x-spec-enum-id: 98ec782c9f2a2c36
          readOnly: true
        created:
          type: string
          format: date-time
          readOnly: true
        started_at:
          type: string
          format: date-time
          readOnly: true
          nullable: true
        completed_at:
          type: string
          format: date-time
          readOnly: true
          nullable: true
      required:
        - completed_at
        - created
        - id
        - started_at
        - status
        - task_type
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT or API Key
      description: >-
        Use `Authorization: Bearer <token>` header. Token can be a JWT token or
        an API key (format: `sk-onetsolutions-...`).

````